我有一个可观察集合的层次结构,有点像这样:
interface IItem
{
ObservableCollection<IItem> Children { get; }
}
给定一个IItem
(或一个ObservableCollection<IItem>
),我想构建一个其他可观察的集合,该集合递归地包含所有子IItem
项。然后,此集合将用作 WPF 列表视图的数据源(例如)。
修改这些项目中的任何一个以具有其他子项应该更新生成的 observable 集合。请注意,没有循环引用。
我知道CompositeCollection 类,我相信这应该对我有帮助(我认为我需要的只是一个复合集合,它递归地包含一个复合集合,其中每个孩子都有一个复合集合Children
),但我看不到一个简洁的方法来这样做是因为此类没有能力将孩子“模板化”到所需的复合集合中。