我在 C# 库中有三种对象的递归层次结构。我们称它们为Boxes、Nuts and Bolts。 Boxes可以包含其他Boxes或Nuts and Bolts。 Nuts and Bolts显然不能包含任何东西。
假设每个Box都有Box、Nut和Bolt的ObservableCollections。每个Nut and Bolt实现INotifyPropertyChanged。
是否有公认的最佳实践将可观察集合的更改通知或任何Nut或Bolt上的属性更改传播到包含对最顶层Box的引用的对象?或者您会推荐任何特定的设计模式?
编辑:为了给这个问题提供一些背景信息,我领导了Chemistry for Word项目。您可以在左侧看到实时显示结构的组件。 现在,不管你信不信,这目前通过数据绑定来绘制所有内容。LHS 上显示的每个分子都是一个 ItemsControl。(是的,我正在将 WPF 与 MVVM 一起使用!)事实证明,这对于长期解决方案来说开销太大且缺乏灵活性。所以我又回到了直接生成DrawingVisuals。这种方法允许更精细的控制。我最初的例子中的盒子、螺母和螺栓是分子,原子和债券。如果添加、删除或更改其中任何一个,则显示器必须知道它,以便它可以更新。因为我已经实现了数据绑定的接口和对象,所以我想利用我已经拥有的代码。