我正在用C#和.NET Framework 4.6開發MVVM WPF應用程序。應該ViewModel類實現INotifyPropertyChanged還是可以使用Object組合?
我有這個類:
public class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChangedEvent(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
我已經在這裏INotifyPropertyChanged
實現,因爲我不想實現它在所有我的ViewModel類。
要使用這個類,我用繼承:
public class Presenter : ObservableObject
{
private string _someText;
public string SomeText
{
get { return _someText; }
set
{
_someText = value;
RaisePropertyChangedEvent("SomeText");
}
}
}
但是,有沒有使用對象組合使用ObservableObject
的方法嗎?
我知道對象組合不是繼承,而是在類Presenter
中創建一個ObservableObject
的私有對象實例。
我不確定任何ViewModel類應該實現INotifyPropertyChanged
。
UPDATE:
這不是一個重複的問題。我問,如果一個ViewModel總是實現INotifyPropertyChanged
接口,或者,我可以使用Object組合。我已經解釋過。請仔細閱讀我的問題。
我在過去曾使用ReSharper來對對象使用註釋來提供INotifyPropertyChanged功能。但是我想使用自己的實現,因爲resharper並不總是會給我使用註釋的選項,並且它會涉及到編譯程序集的操作並在適當的位置插入適當的函數。 – XAMlMAX
我已更新我的問題,並提供更多詳細信息。 – VansFannel
您的'VM'需要實現'INPC'的原因是,當使用'Binding'時,UI將使用該事件來刷新屏幕。如果你不使用綁定,只有代碼隱藏,那麼你的'VM'不需要'INPC'實現。 – XAMlMAX