条件验证检查属性

时间:2012-07-07 21:43:47

标签: c# wpf validation data-annotations

我很难找到如何进行有条件的必要验证。

基本上我有一个需要验证的对话框对象。它有一个bool,用于确定对话框的某种状态。

如果该状态为true,则需要验证属性,如果为false,则不使用该属性,因此不需要验证。同时,我希望在值无效时保留标准验证行为,即属性绑定的控件周围的红色边框。

我得到的示例代码:

public class Dialog
{
    public bool UseValidation { get; set; }

    [Required]
    [StringLength(15)]
    public string NotNullString { get; set; }
}

原因是我想在按下OK按钮时验证对话框,因此使用Validator.TryValidateObject()方法。

1 个答案:

答案 0 :(得分:1)

如果您正在使用DataBinding,则可以为属性创建显式的getter和setter,如果数据在setter中无效,则抛出异常。然后,您可以将文本框绑定的 ValidatesOnException 属性设置为True。

public string NotNullString { 
   get { return _NotNullString; }
   set { 
          if(UseValidation && (String.IsNullOrEmpty(value) || value.Length > 15)) {
              throw new Exception("Value must be between 1 and 15 characters long.");
          }
          _NotNullString = value;
       }
}

这是一篇好文章:http://www.codeproject.com/Articles/86955/Silverlight-4-Data-Validation-Tip-of-the-Day-Part