1

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

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

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

我得到的示例代码:

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

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

这样做的原因是我想在按下 OK 按钮时验证对话框,从而使用该Validator.TryValidateObject()方法。

4

1 回答 1

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

于 2012-07-07T22:03:55.953 回答