首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别模型是否已被用户或代码更改

如何识别模型是否已被用户或代码更改
EN

Stack Overflow用户
提问于 2011-05-13 06:49:29
回答 1查看 93关注 0票数 0

我的模型实现了INotifyPropertyChanged,并且我有一个WPF窗口绑定到它(双向绑定)。

我需要知道什么时候通过绑定UI来更改模型,这样我就可以从另一个模块调用Update方法(然后这个模块会将我的模型复制到它的内部结构中)。模型也可以由另一个模块进行更改。

如何告诉(在我的PropertyChanged 事件处理程序中)更改是否起源于我的UI,而不是其他模块?

如果触发PropertyChanged事件的是另一个模块,我不想调用Update方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-13 10:40:15

我自己对WPF来说还是很新的,但是我能想到的唯一一种显而易见的方法就是在模型中添加额外的set方法,这些方法可以在不直接改变属性的情况下修改备份存储,从而触发PropertyChanged事件。要删除复制,属性设置器可能也应该调用这些方法,并且应该有一个布尔参数fireChangedEvent。就像这样:

代码语言:javascript
复制
public string SomeThing
{
    get { return _someThing; }
    set { SetSomeThing(value, true); }
}

public void SetSomeThing(string value, bool fireChangedEvent)
{
    _someThing = value;
    if(fireChangedEvent)
    {
        NotifyPropertyChanged("SomeThing");
    }
}

然后,在另一个模块中,它将是

代码语言:javascript
复制
public void DoStuff
{
    // ...
    model.SetSomeThing("foo",false);
    // ...
}

这不是一个优雅的方法,我知道,我希望别人能想出更聪明的东西,但我想不出一个很好的方法,从一个房地产策划人的内部,究竟是什么设置了这个属性。

希望这至少是一个变通的建议。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5988251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档