2012-07-07 107 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