1

我已經爲使用Caliburn.Micro實現MVVM模式的相當複雜的WPF應用程序繼承了一些代碼。它使用自動綁定的視圖來查看使用Caliburn命名約定的模型。視圖模型從實現INotifyDataErrorInfo的類繼承,Fluent驗證用於生成特定於字段的錯誤。這完美地工作,除了我有一個用戶控件嵌入到幾個不同視圖中的一個場景中,並且該用戶控件中的UI元素需要驗證。在WPF中使用帶有嵌入式UserControl的INotifyDataErrorInfo(使用Caliburn.Micro)

嵌入式用戶控件具有它自己的視圖模型,它沒有實現INotifyDataErrorInfo。只需說我們在驗證父視圖時生成的驗證消息不會傳播到UI以供顯示。

我不能肯定我需要什麼樣的代碼顯示在這裏來說明問題,所以這個問題是比較實在的概念 - 問題是:

林我的方案,我應該在視圖上執行模型背後的嵌入式用戶控件,還是有一些其他方法來使父視圖調用GetErrors()在它的視圖模型上嵌入用戶控件嵌套控件的屬性名稱?

我希望這是有道理的 - 我對WPF很陌生!

回答

1

我最終解決了這個問題。問題原來是因爲我有一個綁定到嵌套視圖的單獨視圖模型,並且該視圖模型沒有從實現INotifyDataErrorInfo的類繼承。只要說這裏的規則似乎是你可以嵌入具有自己的視圖模型(datacontext)的用戶控件,並且仍然可以獲得驗證行爲,但是層次結構中的每個視圖模型都必須實現inotifyDataErrorInfo,否則綁定到它們的UI元素會贏得'不會收到錯誤通知。在我的情況下,很難看到問題,因爲Caliburn.Micro和AutoFac正在進行大量的自動佈線,這在調試環境中很難看到。

相關問題