WPF数据验证(3)——自定义验证规则
来源:互联网 发布:婴幼儿棉裤淘宝 编辑:程序博客网 时间:2024/05/29 18:24
应用自定义验证规则的方法和应用自定义转换器的方法类似。该方法定义了一个 ValidationRule 的类,并且为了执行验证重写 Validate 方法。
public class PositivePriceRule : ValidationRule{ public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo){ decimal price = 0; decimal maxPrice = Decimal.MaxValue; if (decimal.TryParse(value.ToString(), out price)){ if (price >= 0 && price < maxPrice){ return new ValidationResult(true, null); } } return new ValidationResult(false, "UnitCost cannot be negetive"); } }
再看Product类
public class Product : INotifyPropertyChanged{ public event PropertyChangedEventHandler PropertyChanged; private void RaisePropertyChanged(string propertyName){ if (PropertyChanged != null){ this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } private decimal unitCost; public decimal UnitCost{ get { return unitCost; } set{ unitCost = value; this.RaisePropertyChanged("UnitCost"); } } }
xaml:
<Window x:Class="ValidationRuleDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:ValidationRuleDemo" Title="Validation" Height="176" Width="380"> <Window.DataContext> <local:Product/> </Window.DataContext> <StackPanel> <TextBox Margin="5"> <TextBox.Text> <Binding Path="UnitCost" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"> <Binding.ValidationRules> <local:PositivePriceRule/> </Binding.ValidationRules> </Binding> </TextBox.Text> </TextBox> </StackPanel></Window>
Bindding.ValidationRules 集合可包含任何数量的验证规则。将值提交时,WPF将按顺序检查每个验证规则。
当使用PositivePriceRule 验证规则执行验证时,其行为和使用 ExceptionValidationRule验证规则的行为相同——文本框使用黑色轮廓 ,设置HasError 和 Error 属性,并引发 Error 事件。给用户提供一些更有意义的帮助,需要添加一些代码或自己定义 ErrorTemplate 模板。
- WPF数据验证(3)——自定义验证规则
- WPF数据验证(1)—— ExceptionValidationRule验证规则
- WPF数据验证(2)—— DataErrorValidationRule 验证规则
- WPF( 数据验证)
- 9. SpringMVC 数据验证例子2 - 自定义数据验证规则
- wpf验证规则(ValidationRule)过程
- WPF数据验证(5)—— 错误模板
- WPF数据验证(6)—— IDataErrorInfo + DataAnnotations
- wpf数据验证(转)
- SpringMVC杂记(五) JSR303数据验证 自定义验证规则
- WPF数据验证(4)——响应与获取验证错误
- easyui自定义验证规则
- 自定义验证规则
- struts自定义验证规则
- Laravel-自定义验证规则
- WPF TextBox数据验证
- Webwork验证框架(含自定义验证规则)
- WPF自定义正则验证控件
- HDU 3038 How Many Answers Are Wrong
- struts2.1中使用Ajax主题
- 程序的执行过程
- 转载: Visual Studio Unit Test
- UVA 10391 - Compound Words
- WPF数据验证(3)——自定义验证规则
- 习题3-6,进制转换1
- sleep()【延迟代码执行】
- Linux下scp的用法
- 习题3-7,进制转换2
- IOS开发视频教程
- 升级到cocos2d-x 2.0.2代码差异
- 一个MIT计算机博士对数学的思考
- windows上vim+tags+taglist+cscope配置