2011-10-05 28 views
1

我正在編寫一個Silverlight屏幕,它從文件獲取用戶輸入,解析文件並在屏幕上顯示任何驗證錯誤。來自文件的數據從不顯示,屏幕的目的純粹用於驗證反饋。ValidationSummary顯示非表單驗證

我決定創建一個實現INotifyDataErrorInfo的ViewModel,並且在我看來,我將使用ValidationSummary控件來顯示這些錯誤。

我在做這件事的想法是,ValidationSummary控件將偵聽ViewModel上的INotifyDataErrorInfo.ErrorsChanged事件,並在ViewModel的狀態發生變化時相應地更新自身。

不幸的是它不工作。

如果我將一個文本框添加到我的視圖並將其綁定到我的ViewModel上的一個屬性...由於更改文本框中的值而發生的任何驗證錯誤都出現在摘要中 - 這很好地證實了我已經正確實現了INotifyDataErrorInfo。

ValidationSummary控件是否真的依賴於UI交互/綁定來顯示錯誤?

是否應該聽取來自INotifyDataErrorInfo的任何消息,而不管UI的組成方式是否正確?

在此先感謝您的幫助。

回答

1

ValidationSummary控件需要與被驗證的控件位於同一容器中才能顯示錯誤。我沒有成功顯示實體級驗證,也沒有找到關於此主題的許多信息。

據我所知 - 你需要創建你自己的驗證摘要控件,它監聽事件並綁定到錯誤源。

+0

鏈接斷開 - 問題刪除? – foson

+0

是的,問題被刪除 - 沒有迴應 – katit

+0

這正是我們最終做的。 –

0

我認爲使用INotifyDataErrorInfo出於這些原因的目的不正確。這裏什麼MSDN說:

定義數據實體類可以實現提供 自定義同步和異步驗證支持成員。 INotifyDataErrorInfo Interface

而現在的問題是:我們要實現這個接口? 我假設爲了通知用戶導入或導出數據的結果,使用MVVM模式和INotifyPropertyChanged將是綽綽有餘。