2016-06-13 220 views
1

我開始學習C#,目前我正在學習一些棱鏡。 我在整個項目結構和接口方面遇到了一些困難。你們能幫我嗎?棱鏡MVVM結構

我瞭解到ALL ViewModels 實現 繼承了BindableBase接口。但是模型呢?

IE:我有一個員工模型。它有我的類屬性與我的套和獲取和OnPropertyChanged實現。那是對的嗎?

模型實現INotifyPropertyChanged和ViewModel implements 繼承BindableBase

+1

我認爲有必要指出'BindableBase'是一個繼承的基類,它與實現接口不同。我很抱歉,我不能回答你的實際問題,因爲我只熟悉MVVMLight。 – Filburt

+1

您的模型應包括您的班級以及與之相關的所有功能。你的ViewModel應該包含所有的邏輯。然後你的視圖將包括所有的事件處理程序和GUI –

+1

不**你的ViewModel的所有**必須擴展'BindableBase **類**(它不是一個接口)。 'BindableBase'具有實現'INotifyPropertyChanged'的整潔方式,您可以使用它或不使用它。如果你不使用它,什麼都不會發生。只需實現'INotifyPropertyChanged'就是這樣。如果你決定使用它,在你的模型上使用它也沒有問題,但是當你這樣做的時候你必須包括棱鏡組件,這可能或不可取。 'BindableBase'的源代碼:https://github.com/PrismLibrary/Prism/blob/master/Source/Prism/Mvvm/BindableBase.cs – kha

回答

1

BindableBase是Prism爲您的viewmodels/models提供的基類。這個基類可以幫助你實現INotifyPropertyChanged並提供一個SetProperty方法來確保你不會忘記觸發事件。您可以自己實現INotifyPropertyChanged並調用OnPropertyChanged方法,但爲什麼要麻煩。

您可以討論模型是否應該執行INotifyPropertyChanged(本身或從BindableBase繼承)。

只要你的數據可以通過前端或後端和用戶界面(或任何其他系統看變化)改變需要通知/更新,這是最容易實現的INotifyPropertyChanged(/使用BindableBase)。如果你的模型中的某種類型總是隻讀的,你可以離開界面,但在我看來,大部分時間不值得麻煩(如果有一天它不再是隻讀的,並且你有更新錯誤)。

有關MVVM模式和INotifyPropertyChanged的更多信息,請參閱Prism documentation