如何检查如果在分配克隆后模型更改

时间:2017-03-08 08:08:34

标签: c# wpf mvvm

我的模型类继承自BaseModel类。我将模型克隆发送到对话框,之前我从该模型中捕获了所有属性。比,我打开对话框编辑数据。如果单击“保存”,则按模型克隆覆盖模型,否则单击“关闭”并关闭对话框。之后,我可以将数据发送到数据库,但在我检查是否有某些东西通过基本模型的方法发生了变化,从而在开始时捕获数据。 问题是,当我将克隆模型分配给原始模型时,OnPropertyChange方法不会调用,例如:如果模型克隆具有集合属性并且我在集合中更改某些内容,则在对话框中调用chollectionChange方法并且isDataChange方法可以在此处返回true。当我将clone分配给orginal模型时,比IsDataChange方法返回false。我坚持认为,但我该如何解决这个问题呢?有人了解我吗? :)

也许,我不应该克隆?我使用observablleColection,所以我可以跟踪变化。我不知道如何实现它。我调用chollection change事件,下一步是什么?

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用Json.Net创建模型的json对象,然后再次创建一个json对象,并比较字符串。

请记住,这不是一种有效的方法,但对于您的场景,CPU使用率应该不是问题。

答案 1 :(得分:1)

您可以设置每个属性,而不是设置整个模型。至少对于非列表属性。

类似的东西:

original.Property1 = clone.Property1;
original.Property2 = clone.Property2;

而不是:

original = clone;