0

例如,如果您想在每个带有待处理更改的文档旁边有一个视觉提示,如 Visual Studio 中的红点,那么在模型是实体框架模型的情况下,使用 MVVM 实现它的常用方法是什么?你只是在视图模型级别保留一个 IsDirty 标志吗?我猜你不想在你的数据库上下文中继续调用 DetectChanges 来查看实体是否已更新。

4

1 回答 1

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;
    }
}
于 2012-11-20T23:00:15.263 回答