2010-11-10 102 views
1

我的WPF应用程序显示具有某些属性的对象树。这些属性可以通过数据绑定从UI进行修改。对象本身可以添加或删除。没什么特别的。跟踪对象树中的修改

现在的问题是:什么是最好的方式来了解对象树中某处的变化?

想法至今认为:

  • 创建一个静态方法来通过每个对象被调用时,它被修改
  • 中的每个对象类型创建静态事件,并听取其
  • 上实现INotifyPropertyChanged每个对象,并让他们都通知他们的父母有关修改,所以我可以听对象树目录上的一个事件
  • 收听来自控件的事件,如TextChanged,Checked

他们都看起来像丑陋的网格,所以我害怕执行任何他们。

+0

我不明白为什么这个问题需要“算法”标签。 – MAK 2010-11-10 16:42:50

+0

答案可能真的很一般。可能有其他语言/框架中使用的常见做法。 – 2010-11-11 09:36:00

回答

0

如果comeone会有兴趣,我最终将树中的所有对象都从共同祖先继承到树中,这个共同祖先负责跟踪IsDirty状态并在对象树中向上和向下推进它。我的意思是,如果某个对象被标记为那么它的所有父母都被认为是脏。是的,我在这个普通的超类中实现了INotifyPropertyChanged以了解这些变化。

2

INotifyPropertyChanged可能是最好的方法,因为它可以让您从任何根节点冒出更改通知。我想这也取决于你的类型有多复杂,以及你想要做出什么样的改变?

+0

我只想知道是否有任何更改。只需启用“保存”按钮。任何属性更改或对象添加/删除均视为更改。 – 2010-11-12 10:11:43