跟踪对象树中的修改

时间:2010-11-10 15:40:21

标签: c# .net user-interface design-patterns

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

问题是:了解对象树中某处的更改的最佳方法是什么?

到目前为止考虑的想法:

  • 创建一个静态方法,以便在每个对象被修改时调用
  • 在每个对象类型上创建静态事件并听取它
  • 在每个对象上实现INotifyPropertyChanged并让他们都通知他们的父母有关修改,以便我可以在对象树根上听一个事件
  • 收听来自TextChangedChecked等控件的事件。

它们看起来都像丑陋的网格,所以我害怕实现它们中的任何一个。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果有人对此感兴趣,我最终会从共同的祖先中继承树中的所有对象,这些祖先负责跟踪IsDirty状态并在对象树中上下推广它。我的意思是如果某个对象被标记为 dirty 那么它的所有父母也被认为是脏的。是的,我在这个常见的超类中实现了INotifyPropertyChanged以了解这些变化。