1.處理異常
這里說明的一個選項是,如果在Some Data類中設(shè)置了無效值,則這個局域網(wǎng)內(nèi)NET類就拋出了一個異常。Valuel屬性只接受大于5且小于12的值(代碼文件Validation Demo/SomeData.cs)。
在MainWindowl類的構(gòu)造函數(shù)中,舒適化Some Data類的一個新對象,并把它傳遞給Data Context,用于數(shù)據(jù)綁定(代碼文件Validation Demo/MainWindoe.xanl.cs)。
通過局域網(wǎng)呃逆簡單的數(shù)據(jù)綁定,把文本框的Text屬性綁定到Valuel屬性上。如果現(xiàn)在運行應(yīng)用程序,并試圖把該值改為某個無效值,那么單擊Submit按鈕可以驗證該值永遠(yuǎn)不會改變。WPF會捕獲并忽略Valuel屬性的set訪問器跑出的異常(XAML文件Validation Demo/MainWindow.xam)。
可以從Validation類的Errors集合中訪問錯誤信息。要在文本框的工具提示中顯示錯誤信息,可以創(chuàng)建一個屬性觸發(fā)器,只要把Validation類的Has Error屬性設(shè)置為True,就激活觸發(fā)器。觸發(fā)器設(shè)置文本框的ToolTip屬性。
2.數(shù)據(jù)錯誤信息
處理錯誤的另一種方式是確定.NET對象是否執(zhí)行了IDateErrorInfo接口。SomeData類現(xiàn)在改為實現(xiàn)IDateErrorInfo接口。這個接口定義了Error屬性和帶字符串參數(shù)的索引器。在數(shù)據(jù)綁定的過程中驗證WPF時,會調(diào)用索引器,并把要驗證的屬性名作為column Name參數(shù)傳遞,在實現(xiàn)代碼中,如果有效,會驗證其值,如果無效,就傳遞一個錯誤字符串。
3.數(shù)據(jù)錯誤信息的通知
除了支持利用異常和IDataErrorInfo接口進行驗證之外,NET4.5附帶的WPF還支持利用接口INotifyDataErrorInfo進行驗證。在IDataErrorInfo接口中,屬性的索引器可以返回一個錯誤,而在INotifyDataErrorInfo中,可以把多個錯誤關(guān)聯(lián)到一個屬性上。這些錯誤可以使用Get Errors方法來訪INotifyDataErrorInfo中,可以把多個錯誤關(guān)聯(lián)到一個屬性上。這些錯誤可以使用Get Errors方法來訪問。如果實體有錯誤,HasErrors屬性就返回true。這個接口的另一個很好的功能是使用時間Errors Changed通知出了錯誤。這樣,錯誤就可以在客戶端異步檢索,例如,可以調(diào)用一個Web服務(wù)來驗證用戶輸入。此時,在檢索結(jié)果時,用戶可以急促處理輸入表單,并獲得不匹配情況的異步通知。
下面的示例使用INotifyDataErrorInfo進行驗證。該示例定義基類NotifyDataErrorInfoBase,這個基類實現(xiàn)了接口INotifyDataErrorInfo。它派生于基類BindableObject,來獲得INotifyProperty Changed接口的實現(xiàn)。NotifyDataErrorInfoBase使用字典errors來包含一個列表,列表中的每個屬性都用于存儲錯誤信息。如果任何屬性由錯誤,HasErrors屬性就返回true。GetErrors方法返回一個屬性的錯誤列表:時間Errors Changed再每次改變錯誤信息時觸發(fā)。除了接口INotifyDataErrorInfo中成員之外,這個基類還實現(xiàn)了方法SetErrors、ClearErrors和Clear All Errors,以便于處理設(shè)置錯誤(代碼文件Validation Demo/NotifyDataErrorInfoBase.cs)。
4.自定義驗證規(guī)則
為了更多地控制驗證方式,可以實現(xiàn)自定義驗證規(guī)則。實現(xiàn)自定義驗證規(guī)則的類必須派生自基類Validation Rule。在你前面的兩個例子中,也使用了驗證規(guī)則。派生自Validation Rule抽象基類的兩個類是DataErrorValidationRule和ExceptionValidationRule。設(shè)置ValidatesOnDataErrorInfo接口,就可以激活DataErrorValidationRule。ExceptionValidationRule處理異常,設(shè)置ValidationOnException屬性會激活ExceptionValidationRule。
★關(guān)于WorkWin公司電腦監(jiān)控軟件★
WorkWin的使命是打造Work用途的Windows 電腦系統(tǒng),有效規(guī)范員工上網(wǎng)行為,讓老板知道員工每天在做什么(監(jiān)控包括屏幕、上網(wǎng)在內(nèi)的一舉一動),限制員工不能做什么(禁止網(wǎng)購、游戲、優(yōu)盤等)。
WorkWin基于純軟件設(shè)計,非常容易使用,無需添加或改動任何硬件,使用一臺管理機監(jiān)控全部員工機電腦。歷經(jīng)南京網(wǎng)亞十余年精心打造,此時此刻每天都有成千上萬企業(yè)電腦正在運行WorkWin,選擇WorkWin選擇“贏”。
WorkWin監(jiān)控首頁 短視頻講解 下載免費試用版
版權(quán)所有,南京網(wǎng)亞計算機有限公司 。本文鏈接地址: 局域網(wǎng)內(nèi)NET數(shù)據(jù)對象綁定的驗證