一、定義: ValidatesOnDataErrors 是一種在 WPF 中實現數據校驗的方式,可以通過在 XAML 中設置屬性 ValidatesOnDataErrors 為 True 來啟用。 二、使用: ① 在 ViewModel 中實現 IDataErrorInfo 介面,該介面定義了兩個屬 ...
一、定義:
ValidatesOnDataErrors 是一種在 WPF 中實現數據校驗的方式,可以通過在 XAML 中設置屬性 ValidatesOnDataErrors 為 True 來啟用。 二、使用: ① 在 ViewModel 中實現 IDataErrorInfo 介面,該介面定義了兩個屬性:Error 和 Item[string columnName] —— Error 屬性返回 ViewModel 中所有錯誤的描述信息; —— Item[string columnName] 屬性返回指定屬性的錯誤描述信息。 ② 在 XAML 中設置 Binding 的 ValidatesOnDataErrors 屬性為 True,例如:<TextBox Text="{Binding Name, ValidatesOnDataErrors=True}" />
③ 在 ViewModel 中對需要校驗的屬性設置註解,例如:
public class Person : IDataErrorInfo { public string Name { get; set; } public int Age { get; set; } public string this[string columnName] { get { string error = null; switch (columnName) { case "Name": if (string.IsNullOrEmpty(Name)) error = "Name不能為空"; break; case "Age": if (Age < 0 || Age > 120) error = "Age必須在0到120之間"; break; } return error; } } public string Error { get { return null; } } }在this[string columnName]方法中,我們可以根據傳入的列名判斷該列的值是否合法: —— 如果不合法則返回對應的錯誤信息。 —— 如果返回 null 或者空字元串,則表示該屬性的值是有效的。 Error方法:我們可以判斷整個數據模型的值是否合法,如果不合法則返回對應的錯誤信息. 註意: 如果在this[string columnName]方法中返回了錯誤信息,則Error方法不會被調用。 只有當所有屬性的值都合法時,Error方法才會被調用。 因此,在實現IDataErrorInfo介面時,我們需要在this[string columnName]方法中儘可能地判斷屬性的值是否合法,以減少Error方法的調用次數。 ④ 在界面上輸入數據時,如果校驗失敗,會在控制項旁邊顯示紅色感嘆號圖標,滑鼠懸浮在圖標上可顯示錯誤信息。