2012-04-04 60 views
0

我有一個自定義控件綁定到視圖模型中的對象。該控件擁有自己的「迷你視圖模型」(實現raiseproperychanged和idataerrorinfo),它的代碼僅用於某些特定的驗證。將控制級別(視圖)驗證錯誤返回到視圖模型

該控件的內部使用了一些屬性,可能導致控件處於無效狀態(這些屬性是控件固有的,並且不代表我們綁定的模型的屬性)。我怎樣才能讓這些驗證錯誤「冒泡」,以便與此控件綁定的屬性顯示爲具有驗證錯誤?

有關更清晰的示例。假設我有一個人物對象綁定到自定義用戶控件的person屬性。該控件將允許您編輯人員的子屬性等。除了通常應用於人員對象的控件之外,在此控件中還有其他驗證,例如控件在用戶關閉控件創建的對話框之前爲「無效」,或者單擊指示已完成編輯的複選框。我希望將這些驗證錯誤傳播出去,以便綁定到person屬性顯示驗證錯誤,或者更具體地說,包含它的VM。

回答

1

你有錯誤的方法 - 控件在ViewModel上設置值(通過綁定),並且ViewModel驗證每個字段並通過IDataErrorInfo提供錯誤消息。欲瞭解更多信息,請參閱:http://codeblitz.wordpress.com/2009/05/08/wpf-validation-made-easy-with-idataerrorinfo/

+0

我知道IDataErrorInfo是如何工作的,我正在尋找一種方法來表明「Person」本身是無效的,而不僅僅是人的子屬性。 – Brandorf 2012-04-04 20:20:29

+0

雖然它不能解決我眼前的問題,但我會將其標記爲答案,因爲看起來我真正的問題是方法,而不是缺少一個接口來做我想做的事情。 ,p – Brandorf 2012-04-16 21:32:07