我開始學習C#,目前我正在學習一些棱鏡。 我在整個項目結構和接口方面遇到了一些困難。你們能幫我嗎?棱鏡MVVM結構
我瞭解到ALL ViewModels
實現
繼承了BindableBase接口。但是模型呢?
IE:我有一個員工模型。它有我的類屬性與我的套和獲取和OnPropertyChanged實現。那是對的嗎?
模型實現INotifyPropertyChanged
和ViewModel
implements
繼承BindableBase
?
我開始學習C#,目前我正在學習一些棱鏡。 我在整個項目結構和接口方面遇到了一些困難。你們能幫我嗎?棱鏡MVVM結構
我瞭解到ALL ViewModels
實現
繼承了BindableBase接口。但是模型呢?
IE:我有一個員工模型。它有我的類屬性與我的套和獲取和OnPropertyChanged實現。那是對的嗎?
模型實現INotifyPropertyChanged
和ViewModel
implements
繼承BindableBase
?
BindableBase是Prism爲您的viewmodels/models提供的基類。這個基類可以幫助你實現INotifyPropertyChanged並提供一個SetProperty方法來確保你不會忘記觸發事件。您可以自己實現INotifyPropertyChanged並調用OnPropertyChanged方法,但爲什麼要麻煩。
您可以討論模型是否應該執行INotifyPropertyChanged
(本身或從BindableBase
繼承)。
只要你的數據可以通過前端或後端和用戶界面(或任何其他系統看變化)改變需要通知/更新,這是最容易實現的INotifyPropertyChanged
(/使用BindableBase
)。如果你的模型中的某種類型總是隻讀的,你可以離開界面,但在我看來,大部分時間不值得麻煩(如果有一天它不再是隻讀的,並且你有更新錯誤)。
有關MVVM模式和INotifyPropertyChanged的更多信息,請參閱Prism documentation。
我認爲有必要指出'BindableBase'是一個繼承的基類,它與實現接口不同。我很抱歉,我不能回答你的實際問題,因爲我只熟悉MVVMLight。 – Filburt
您的模型應包括您的班級以及與之相關的所有功能。你的ViewModel應該包含所有的邏輯。然後你的視圖將包括所有的事件處理程序和GUI –
不**你的ViewModel的所有**必須擴展'BindableBase **類**(它不是一個接口)。 'BindableBase'具有實現'INotifyPropertyChanged'的整潔方式,您可以使用它或不使用它。如果你不使用它,什麼都不會發生。只需實現'INotifyPropertyChanged'就是這樣。如果你決定使用它,在你的模型上使用它也沒有問題,但是當你這樣做的時候你必須包括棱鏡組件,這可能或不可取。 'BindableBase'的源代碼:https://github.com/PrismLibrary/Prism/blob/master/Source/Prism/Mvvm/BindableBase.cs – kha