在MVVM + EntityFramework中通知用户对象已更改的正确方法是什么?

时间:2012-11-20 20:20:42

标签: entity-framework mvvm

例如,如果您希望在每个文档旁边的Visual Studio中有一个红点等视觉提示,并且有未决更改,那么使用MVVM实现它的常用方法是什么,其中模型是实体框架模型?你只是在视图模型级别保留一个IsDirty标志吗?我猜你不想继续在db上下文中调用DetectChanges来查看实体是否已经更新。

1 个答案:

答案 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;
    }
}