例如,如果您希望在每个文档旁边的Visual Studio中有一个红点等视觉提示,并且有未决更改,那么使用MVVM实现它的常用方法是什么,其中模型是实体框架模型?你只是在视图模型级别保留一个IsDirty标志吗?我猜你不想继续在db上下文中调用DetectChanges来查看实体是否已经更新。
答案 0 :(得分:0)
如果模型对象实现了INotifyPropertyChange,则始终可以点击PropertyChanged事件。鉴于您检查属性设置为相同的值,例如:
public string Name
{
get { return _name; }
set
{
if(_name == value) return;
_name = value;
RaisePropertyChanged("Name");
}
}
您可以观察模型上的任何属性是否已从ViewModel更改,并通过ViewModel上的标志显示/隐藏该图标,类似于以下内容:
public class TreeItemViewModel
{
public TreeViewModel(TreeItem model)
{
model.PropertyChanged += OnTreeItemModified();
}
private void OnTreeItemModified(object sender, EventArgs e)
{
DisplayIcon = true;
}
}