WPF ValidationRule 加载控件时验证

标签 wpf validation

我有一个带有此验证的控件

<MyPicker.SelectedItem>
 <Binding Path="Person.Value" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True">
  <Binding.ValidationRules>
   <rules:MyValidationRule ValidationType="notnull"/>
  </Binding.ValidationRules>
 </Binding>
</MyPicker.SelectedItem>

这是验证类:

class MyValidationRule : ValidationRule
{        
 private string _validationType;
 public string ValidationType
 {
  get { return _validationType; }
  set { _validationType = value;  }
 }

 public override ValidationResult Validate(object value, CultureInfo cultureInfo)
 {            
  ValidationResult trueResult = new ValidationResult(true, null);

  switch (_validationType.ToLower())
  {
   case "notnull": return value == null ? new ValidationResult(false, "EMPTY FIELD") : trueResult;               
   default: return trueResult;
  }
 }
}

问题:当属性更改时,将调用 Validate( ) 方法,这是正确的。

但是要在创建 MyControl 时一开始就调用此方法吗?如果控件中存在空值,我需要在初始化后立即证明(并显示验证错误)

最佳答案

好的,我已经解决了: 当元素与简单属性绑定(bind)时强制进行验证 - ValidatesOnTargetUpdated:

 <rules:MyValidationRule ValidatesOnTargetUpdated="True"  ValidationType="notnull"/>

关于WPF ValidationRule 加载控件时验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2644288/

相关文章:

c# - Wpf ItemSsource 不更新自定义控件中的视觉控件

WPF:为什么 PreviewMouseLeftButtonDown EventTrigger 有效而 MouseLeftButtonDown 无效?

wpf - 绑定(bind)到 ActualHeight 不起作用

c# - DataGrid 更新添加的行但不更新添加的列

c# - 添加新用户控件按钮单击 WPF MVVM 中的命令

c# - 根据一组规则验证日期

c# - C# 中的本地化属性参数

php - 在两个单词之间包含空格 Javascript if() 语句

css - 导致错误的神秘 span 标签

c# - .NET Framework 中是否有一些东西可以检查一个值是否适合一个类型?