2011-01-25 109 views
0

我的問題如下:使用DataAnnotation實現Silverlight驗證

我有一個ChildWindow獲取可編輯的實體。

我使用DataAnnotation屬性來設置驗證規則。

我的實體具有名稱屬性,並且必需屬性應用於其上。

如果我修改現有的實體,並清除綁定到名稱屬性 的文本框,則會出現名稱字段爲必需的驗證錯誤。

但是當我添加一個新的實體並且Name屬性爲null時,驗證不起作用。

我在類的構造函數中將Name屬性設置爲String.Empty,並在驗證錯誤在文本框中顯示的子窗口中顯示實體。

什麼是最佳解決方案?

我可以將顯示childwindow的按鈕設置爲不觸發驗證嗎?

在Asp.NET中,按鈕控件具有錯誤的IsCausesValidation屬性,該按鈕不會觸發驗證。

感謝advance l,

回答

0

你想達到什麼目的?除非通過底層綁定對象上的setter實際設置屬性,否則不會引發驗證異常。當用戶首次輸入數據輸入表單時,是否要顯示所有驗證錯誤?你在使用數據表單嗎?如果是這樣,您應該可以在保存數據時驗證整個表單,例如

private void OKButton_Click(object sender, RoutedEventArgs e) 
    { 
     bool valid = MyDataForm.ValidateItem(); 
     if (valid) 
     { 
      MyDataForm.CommitEdit(true); 
      this.DialogResult = true; 
     } 
    }