2009-08-26 52 views
2

當我不喜歡用數據形和DataGrid數據控件是有像[必需]屬性的任何使用,[StringLength]我的實體?這些可以用於上述數據控制之外的驗證嗎?Silverlight和DataAnnotations

如果是這樣,你能指出我的一些例子或文檔。如果有任何驗證錯誤,我想阻止用戶按OK按鈕,並且希望避免拋出setter異常(可能?)。

回答

1

是的,那些可用於驗證,而無需使用UI控件。 Brad Abrams有一個blog post,詳細介紹瞭如何將這些屬性用於數據表單,但似乎應該能夠將其帖子的UI部分與核心驗證邏輯分開。

從帖子,這裏是用手工添加驗證邏輯的樣本屬性。

[DataMember()] 
[Key()] 
[ReadOnly(true)] 
public int EmployeeID 
{ 
    get 
    { 
     return this._employeeID; 
    } 
    set 
    { 
     if ((this._employeeID != value)) 
     { 
      ValidationContext context = new ValidationContext(
       this, null, null); 
      context.MemberName = "EmployeeID"; 
      Validator.ValidateProperty(value, context); 
      this._employeeID = value; 
      this.OnPropertyChanged("EmployeeID"); 
     } 
    } 
}  
+0

如果用戶修改了某個存在的值或輸入了一個值,這很好。 – DaveB 2009-08-28 22:23:59