2014-10-01 33 views
0

我已經創建了一個模型,有幾個自定義驗證。這些自定義驗證我已註釋屬性由以下代碼CustomValidation註釋事件提出問題MVVM Silverlight 5

[CustomValidation(typeof(ItemmasterModel), "ValueTextMaxLenghtValidate")] 
public decimal Valuetextmaxlength 
    { 
     get 
     { 
      return _Valuetextmaxlength; 
     } 
     set 
     { 
      ValidateProperty("Valuetextmaxlength",value); 
      _Valuetextmaxlength = value; 
      RaisePropertyChanged(() => Valuetextmaxlength); 
     } 
    } 
    public static ValidationResult ValueTextMaxLenghtValidate(object obj, ValidationContext context) 
    { 
     var itmmstr = (ItemmasterModel)context.ObjectInstance; 
     if (itmmstr.SelectedValuetypeDd != null) 
     { 
      string vtype = itmmstr.SelectedValuetypeDd.Key.ToString(); 
      if (vtype.Equals("C")) 
      { 
       if (itmmstr.SelectedItemValueCodeTypesDd != null) 
       { 
        string vcode = itmmstr.SelectedItemValueCodeTypesDd.Key.ToString(); 
        if (vcode.Equals("T")) 
        { 
         if (itmmstr.Valuetextmaxlength == null || itmmstr.Valuetextmaxlength == 0) 
         { 
          return new ValidationResult("Value Max Length is not Entered", 
          new List<string> { "Valuetextmaxlength" }); 
         } 
        } 
       } 
      } 
      else if (vtype.Equals("T")) 
      { 
       if (itmmstr.Valuetextmaxlength == null || itmmstr.Valuetextmaxlength == 0) 
       { 
        return new ValidationResult("Value Max Length is not Entered", 
        new List<string> { "Valuetextmaxlength" }); 
       } 
      } 
     } 
     return ValidationResult.Success; 
    } 

現在這個驗證代碼依賴於其他屬性。 scenerio當用戶從下拉菜單中選擇一個值時,它會自動選擇1個複選框,用戶也應該在texbox中輸入值。

問題:

驗證正在工作。複選框在第一時間被選中,然後它也會出現錯誤彈出窗口。 直到用戶不會更改此複選框或texbox它只有錯誤。 1次它說錯誤的偶數值已被輸入。下一次它甚至用戶沒有輸入任何內容,但在最終的完整對象驗證過程中再次出現錯誤。

爲什麼這種模糊性正在發生。如何解決這個問題。 需要更多的代碼讓我知道。我會發布。代碼是在Silverlight 5中,MVVM Light

回答

0

在我的自定義驗證期間,我使用了ValidateProperty(「Valuetextmaxlength」,value);在設置屬性的值之前,這是給我的問題,但我首先設置值,然後使用我的ValidateProperty(「Valuetextmaxlength」,值);一切順利。但我不知道爲什麼,但它爲我工作。