在我目前的項目中,我必須處理WPF表單中的數據驗證。我的表單位於ResourceDictionnary的DataTemplate中。我可以保存和加載我的表單中的數據,這要歸功於兩個按鈕,它們對數據進行序列化和反序列化(通過兩個DelegateCommand)。WPF驗證錯誤
如果我的表單的一個字段爲空或無效,保存按鈕將被禁用。由於UpdateSourceTrigger屬性,每次更改字段時都會檢查它。這就是爲什麼我需要在我的C#代碼中知道一個字段是否無效以更新我的保存命令。
目前,我在我的XAML綁定中使用了ExceptionValidationRule,我不知道這是否是一個很好的實踐。我無法實現ValidationRule,因爲我需要在C#代碼中知道字段是否無效,以更新保存命令(啓用或禁用保存按鈕)。
<TextBox>
<Binding Path="Contact.FirstName" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox>
在這個blog,我們可以看到:
在二傳手提高例外是不是一個很好的方法,因爲這些屬性也可以通過代碼設定,有時它是確定暫時離開他們錯誤值。
我已經閱讀了這個post但我不能使用它,我的TextBox在DataTemplate中,我不能在我的C#代碼中使用它們。
所以,我不知道是否應該更改我的數據驗證,並且不要使用ExceptionValidationRule。
你嘗試IDataErrorInfo的和MVVM? – blindmeis 2013-03-04 10:41:00
是的,我已經使用MVVM。 IDataErrorInfo似乎是一個很好的解決方案...它會比ExceptionValidationRule更好嗎? – Max 2013-03-04 10:56:33
我會說是的,但它也有它的缺點。特別是如果您的vw中的屬性的類型不是字符串。我們在我們的項目中使用idataerrorinfo並且它可以工作 – blindmeis 2013-03-04 11:42:38