我很难找到如何进行有条件的必要验证。
基本上我有一个需要验证的对话框对象。它有一个bool,用于确定对话框的某种状态。
如果该状态为true,则需要验证属性,如果为false,则不使用该属性,因此不需要验证。同时,我希望在值无效时保留标准验证行为,即属性绑定的控件周围的红色边框。
我得到的示例代码:
public class Dialog
{
public bool UseValidation { get; set; }
[Required]
[StringLength(15)]
public string NotNullString { get; set; }
}
原因是我想在按下OK按钮时验证对话框,因此使用Validator.TryValidateObject()
方法。
答案 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