【发布时间】:2014-03-10 21:12:41
【问题描述】:
如果有任何属性发生更改,我需要 Model 通知 ViewModel,因为我需要将更改的模型实例收集到集合中以进行进一步处理,还需要启用和禁用视图模型中的命令按钮。 所以我使用了 ModelBase 抽象类并添加了 HasChanges 属性,我可以在视图模型中对其进行测试并捕获更改的模型。但它不起作用,我不知道我缺少什么。
public abstract class ModelBase : INotifyPropertyChanged
{
protected ModelBase()
{
}
private bool _hasChanges;
public bool HasChanges
{
get
{
return _hasChanges;
}
set
{
if (_hasChanges != value)
{
_hasChanges = value;
RaisePropertyChanged("HasChanges");
}
}
}
protected void RaisePropertyChanged(string propertyName)
{
HasChanges = true;
this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, e);
}
}
}
Model 被包裹在 ViewModel 中,并绑定到 DataGrid 的 View:
private Model_selectedModel;
public Mode SelectedModel
{
get
{
return _selectedModel;
}
set
{
if (_selectedModel != value)
{
_selectedModel = value;
NotifyPropertyChanged("SelectedModel");
}
}
}
感谢您的宝贵帮助。
【问题讨论】:
标签: c# wpf mvvm inotifypropertychanged