2009-12-10 39 views
5

在WPF中處理一些自定義驗證器時,我的一位同事指出了IDataErrorInfo。我在XAML中有一個包含文本框和按鈕的示例視圖。基於文本框中的值,我希望按鈕被啓用或禁用。我的同事建議在我的視圖的呈現器中擴展IDataErrorInfo併爲'Item'和'Error'屬性編寫自定義邏輯將解決我的問題。在我可以將它加入我的代碼之前,我想我應該瞭解IDataError信息是如何工作的,以及實現這個接口的過程是什麼,它提供了必要的鉤子來觸發自定義驗證邏輯?一些有助於這個概念將是非常有益的!什麼是IDataErrorInfo,它如何與WPF一起使用?

回答

4

IDataErrorInfo是一個類可以實現的接口,用於通知訂閱者有關特定屬性的錯誤信息以及類級別的錯誤。

如果您爲用作DataContext的類(即:MVVM中的ViewModel)實現此功能,則可以將ControlsOnValidationError設置爲true,並設置自定義模板以便在出現錯誤時以不同方式顯示該項目。 WPF爲你處理管道。

這是short tutorial showing the entire process

+0

感謝您的快速響應。我實際上想知道接線如何在幕後工作。作爲WPF世界的新手,我想知道運行時如何知道擴展IDataErrorInfo將觸發驗證。你的解釋有很多幫助,但我仍然對事物如何連接在一起感到困惑。 – 2009-12-11 16:10:59

+1

基本上,如果你放入UpdatesOnValidationError,任何時候一個屬性改變(WPF通過INotifyPropertyChanged或依賴屬性機制知道),它會檢查該屬性的IDataError信息。如果出現錯誤,它將交換模板。 – 2009-12-11 16:30:43

+0

謝謝里德。事情越來越清晰了。在我的XAML中,對於我的Textbox.Text,我想插入以下代碼: 什麼作爲UpdatesOValidationError資格在這裏? ValidatesOnTargetUpdated =「True」,調用文本的Error屬性? – 2009-12-11 18:13:07

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.

相關問題