2011-10-05 28 views
0

如何驗證這個班?(WPF)如何驗證這個班?(WPF)

我無法理解的是物業每個。

對於這種方法:公共覆蓋的ValidationResult驗證(對象

名最大字符必須是10; 年齡最大的值必須是150;

public class Person : ValidationRule 
    { 
     string _Name; 

     public string Name 
     { 
      get 
      { 
       return _Name; 
      } 
      set 
      { 
       _Name = value; 
      } 
     } 

     int _age = 20; 

     public int Age 
     { 
      get { return _age; } 
      set { _age = value; } 
     } 

     string _Phone = "000-0000"; 

     public string Phone 
     { 
      get { return _Phone; } 
      set { _Phone = value; } 
     } 

     public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) 
     { 
      **//is value Which Property?** 
       //I can not understand is the Property Value for each 
      return new ValidationResult(true, null); 
     } 
    } 

回答

1

你不能讓你的類從ValidationRule派生:它是一個人,而不是一個規則。

首先,我不建議WPF開發人員使用驗證規則。使用MVVM,並有您的視圖模型按照(例如)here所述執行IDataErrorInfo

如果你想創建一個單一的ValidationRule類驗證您的Person類,你可以,但你需要在類中創建一個PropertyName屬性,並將其設置在XAML,如:

<TextBox> 
    <TextBox.Text> 
    <Binding Path="Age" 
      Mode="TwoWay"> 
     <Binding.ValidationRules> 
     <local:PersonValidationRule PropertyName="Age"/> 
     </Binding.ValidationRules> 
    </Binding> 
    </TextBox.Text> 
</TextBox> 

然後該類中的Validate方法可以查看PropertyName並相應地進行分支。當然,現在您已經實現了一個新的失敗點 - 如果您在XAML中放置了錯誤的屬性名稱,會發生什麼?如果您使用數據錯誤驗證,那不會發生。