2012-07-07 77 views
1

我很难找到如何做一个条件需求验证。有条件的验证检查属性

基本上我有一个需要验证的对话框对象。它有一个布尔值,它决定了对话的特定状态。

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

什么我示例代码:

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

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

这样做的原因是,我希望当按下OK按钮,因此利用Validator.TryValidateObject()方法来验证对话框。

+0

你忘了要问的问题。 – Adam 2012-07-07 21:44:47

回答

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

+0

但是如果我从未调用过setter,我将如何验证?我需要通过Validator.TryValidateObject()方法按需完成验证。我应该编辑我的问题 – Perry 2012-07-08 02:33:07

+1

这是你在找什么? http://stackoverflow.com/questions/3400542/how-do-i-use-ivalidatableobject – Misha 2012-07-08 02:56:19