我正在使用DataTemplate
將某些代碼轉換爲更合適的MVVM實現,並且在某些類型的UI驗證方面存在問題。MVVM中的UI綁定驗證
我在視圖模型驗證沒有問題 - IDataErrorInfo
已實施,一切都很好。我遇到的一個問題是界面綁定錯誤,他們可能會把一個TextBox
中的字母綁定到int。
以前,我用:
System.Windows.Controls.Validation.AddErrorHandler(userControl, handler)
...並保持添加和刪除錯誤的計數知道所有形式的數據是否OK。
但現在我正在做MVVM,我沒有訪問userControl來設置這個處理程序。所以我真的沒有一個鉤子來開始。
是否有某種形式的全球DataTemplateApplied
事件處理程序的提供,我可以這樣做:
void OnDataTemplateApplied(object data, Control template)
{
if (data is MyViewModelBase)
{
Validation.AddErrorHandler(template, handler);
}
}
或者,也許我可以在引導程序的外殼窗口調用AddErrorHandler
一次,然後每次事件被炒魷魚找出哪個ViewModel爲這個特定的控件提供動力?
我知道有些人喜歡製作所有虛擬機字段字符串,並在虛擬機中進行大量類型轉換 - 由於各種原因,這對我們的系統並不現實。
你能給關於「移動ValidationError事件處理的行爲」多一點點信息?現在我的知識中,行爲有點像黑洞,但聽起來這就是我想要的。我有幾十個視圖,並且正在尋找全局代碼,而不是將樣板文件複製並粘貼到我創建的每個視圖。 Visual Studio Designer使得將每個視圖UserControls的繼承改爲一個通用基類有些痛苦,但那是我的備份計劃。 – Clyde
編輯帖子以添加行爲示例。 是的,我出於同樣的原因使用了行爲。我不想將所有的xaml文件都更改爲新類,並且發現這些行爲非常易於使用,並且對於這種情況似乎很有效 –
太棒了,謝謝。 – Clyde