我正在爲我的WPF項目創建BaseViewModel,它是從DynamicObject派生的,我不太確定如何處理實體的屬性更改'與主要實體(視圖模型中主要實體的導航屬性)相關「。MVVM DynamicObject +實體框架STE實體+屬性更改行爲
例如:
VM:
3210這將是VM的客戶CRUD,例如。並且Customer實體例如具有稱爲Address(地址類型的實體)的導航屬性。
現在,問題是,將視圖綁定到Address內的屬性時,更改不會報告給VM,而是會直接發送到實體,因此不會觸發在VM級別定義的任何行爲。
我知道解釋可能不夠清楚,我只是不知道如何用我可憐的英語解釋自己。
我的問題是:通用的基於DynamicObject的虛擬機如何處理需要爲屬性定義行爲的場景,而不是主要實體的一部分?
該解決方案需要爲整個圖中的每個實體訂閱Propertychanged事件,這對我來說看起來不太優雅。此外,我不喜歡必須訂閱虛擬機來模擬事件的事實,因爲那樣每次顯示不同的模型時我都需要訂閱和取消訂閱。我也在尋找一個可以在框架級別實現的通用解決方案(我的意思是抽象通用BaseViewModel級別) –
反正你需要某種註冊/註銷功能,這些功能必須是你的框架的一部分。但是,也許這將是一個更優雅的方法: 考慮引入一個接口,如IModel,它有一個方法,例如RegisterCallback(動作回調)以獲取模型的反饋。這更好,因爲只有一個Model與一個ViewModel進行通信。然後讓ViewModel註冊/取消註冊新的回調,每當引入新模型時。最後但並非最不重要的是將泛型類定義約束爲實現IModel的類。 –