WPF中Binding数据校验、并捕获异常信息的三种方式
创始人
2024-05-11 03:48:39

Binding数据校验、并捕获异常信息的三种方式

WPF在使用Binding时,经常需要进行数据校验,如果校验失败需要捕获失败的原因,并加以展示,本文主要介绍数据校验异常并捕获的三种方式。

依赖属性异常捕获

  1. 先定义一个依赖属性
public int Value
{get { return (int)GetValue(ValueProperty); }set { SetValue(ValueProperty, value); }
}
//第5个参数为验证回调函数
public static readonly DependencyProperty ValueProperty =DependencyProperty.Register("Value", typeof(int), typeof(MainWindow), new PropertyMetadata(0), new ValidateValueCallback(OnValueValidation));private static bool OnValueValidation(object value)
{if (value.ToString() == "123")return false;return true;
}
  1. 想要获得错误内容,需要用Validation.Errors静态函数,获得一个集合,一般都是一条数据。
  2. XAML代码


在这里插入图片描述

属性抛出Exception异常捕获

如果不是依赖属性,可以利用引发异常的方式来让XAML来捕获。

  1. 类中的某个普通属性

    public class MyData
    {private string _value = "200";public string Value{get { return _value; }set{_value = value;if (value == "123")throw new System.Exception("报错了~~~[Exception]");}}
    }
    
  2. 在XAML中增加DataContext



  1. XAML界面代码



此时在文本框中输入123,会直接引发异常

点击继续调试,会出现如下效果,调试状态下会比较难受,但是在程序打包运行后,效果和之前一样,但是不推荐这样,比较消耗资源。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zG4PJmPg-1673592883266)(Binding数据校验的三种方式.assets/image-20230113144430817.png)]

使用ValidationRule异常捕获

可以自定一个类,继承自ValidationRule,类中包括验证规则

  1. 新建规则类
public class ValueValidtionRule : ValidationRule
{public override ValidationResult Validate(object value, CultureInfo cultureInfo){if (value.ToString() == "123")//报错return new ValidationResult(false, "报错了~~~~[ValueValidtionRule]");return new ValidationResult(true, "");}
}
  1. XAML中



在这里插入图片描述

相关内容

热门资讯

阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...