在WPF中處理一些自定義驗證器時,我的一位同事指出了IDataErrorInfo。我在XAML中有一個包含文本框和按鈕的示例視圖。基於文本框中的值,我希望按鈕被啓用或禁用。我的同事建議在我的視圖的呈現器中擴展IDataErrorInfo併爲'Item'和'Error'屬性編寫自定義邏輯將解決我的問題。在我可以將它加入我的代碼之前,我想我應該瞭解IDataError信息是如何工作的,以及實現這個接口的過程是什麼,它提供了必要的鉤子來觸發自定義驗證邏輯?一些有助於這個概念將是非常有益的!什麼是IDataErrorInfo,它如何與WPF一起使用?
5
A
回答
4
IDataErrorInfo是一個類可以實現的接口,用於通知訂閱者有關特定屬性的錯誤信息以及類級別的錯誤。
如果您爲用作DataContext的類(即:MVVM中的ViewModel)實現此功能,則可以將ControlsOnValidationError設置爲true,並設置自定義模板以便在出現錯誤時以不同方式顯示該項目。 WPF爲你處理管道。
0
您可能會感興趣的WPF Application Framework (WAF)的BookLibrary示例應用程序。它顯示瞭如何在WPF中使用驗證以及如何在存在驗證錯誤時控制Save按鈕。
0
如前所述,IDataErrorInfo接口爲數據綁定的ViewModel屬性提供驗證。您可以實現自定義驗證規則或利用System.ComponentModel.DataAnnotations中提供的驗證屬性。
我發現很多關於這個主題的教程都帶有額外的「絨毛」,而且他們可能會讓有人開始使用WPF來理解這個概念。我寫了一個直接在refactorthis.net的點教程叫WPF Validation tutorial for the rest of us. Learn to use IDataErrorInfo to automatically validate your views.
相關問題
- 1. 什麼是strophe以及如何將它與JQuery一起使用?
- 2. 與sinatra一起使用eventmachine,爲什麼它總是會退出?
- 3. 如何將C#與WPF一起使用
- 4. 什麼是標準輸入和它如何與fscanf一起使用?
- 5. 什麼是ReactJS以及如何將它與HTML代碼一起使用?
- 6. 什麼是Web服務,以及如何與Delphi Prism一起使用它們?
- 7. IDataErrorInfo的 - 它是如何工作
- 8. 什麼是WPF,它與WinForms相比如何?
- 9. 「IDataErrorInfo的」是「命名空間」,但使用像一個「類型」 - WPF
- 10. Async IDataErrorInfo - WPF
- 11. WPF IDataErrorInfo問題
- 12. wpf idataerrorinfo combobox
- 13. 什麼是com.android.vending.BILLING,如何使用它?
- 14. 什麼是nsoperation?如何使用它?
- 15. 什麼是args,我如何使用它?
- 16. 什麼是ipc?我如何使用它?
- 17. 什麼是PS3 Root密鑰/它有什麼作用/它是如何使用的?
- 18. 什麼是在C#中使用的getter和setter?我如何將它們與數組一起使用?
- 19. 使用IDataErrorInfo提交WPF驗證
- 20. 這個ArrayAdapter適合與CommonsWare MergeAdapter一起使用嗎?如果是這樣,爲什麼它不起作用?
- 21. 什麼是模擬以及它如何與PrincipalContext配合使用
- 22. WPF IDataErrorInfo的整合
- 23. WPF ListBox +綁定+ IDataErrorInfo =?
- 24. WPF/C#IDataErrorInfo Not Firing
- 25. 與PageDown一起使用時,MarkDownSharp的用途是什麼?
- 26. 如何清除WPF IDataErrorInfo驗證錯誤
- 27. WPF驗證(IDataErrorInfo的)與ICommand的
- 28. 什麼決定PDO :: ATTR_TIMEOUT如何與ODBC連接一起使用?
- 29. 什麼是使Visual Studio掛起,我該如何防止它?
- 30. SSMA時間戳。它是什麼,它是如何使用的?
感謝您的快速響應。我實際上想知道接線如何在幕後工作。作爲WPF世界的新手,我想知道運行時如何知道擴展IDataErrorInfo將觸發驗證。你的解釋有很多幫助,但我仍然對事物如何連接在一起感到困惑。 – 2009-12-11 16:10:59
基本上,如果你放入UpdatesOnValidationError,任何時候一個屬性改變(WPF通過INotifyPropertyChanged或依賴屬性機制知道),它會檢查該屬性的IDataError信息。如果出現錯誤,它將交換模板。 – 2009-12-11 16:30:43
謝謝里德。事情越來越清晰了。在我的XAML中,對於我的Textbox.Text,我想插入以下代碼: 什麼作爲UpdatesOValidationError資格在這裏? ValidatesOnTargetUpdated =「True」,調用文本的Error屬性? –
2009-12-11 18:13:07