CompositeCollection没有';t在基础集合中传播更改
本文关键字:集合 传播 没有 CompositeCollection | 更新日期: 2023-09-27 18:21:46
我有一个我认为是CompositeCollection的理想场景,只是对基础集合的项所做的更改似乎不会出现在CompositeCollection中(或者,无论如何,不会出现在源为该CompositeCollection)。
EDIT 1:两个底层集合都是ObservableCollections
编辑2:添加新的/更新的项目,但该项目的内容不会反映在组合框的下拉区域中。每个项都实现INotifyPropertyChanged。
我是做错了什么,还是没有得到支持?
这是我的:
<ComboBox SelectedItem="{Binding Products}">
<ComboBox.Resources>
<CollectionViewSource x:Key="CustomProductsSource" Source="{Binding CustomProducts}" />
</ComboBox.Resources>
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={x:Static local:Products.Standard}}" />
<Separator/>
<CollectionContainer Collection="{Binding Source={StaticResource CustomProductsSource}}"/>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
Products.Standard
和CustomProducts
是什么类型的集合?如果他们没有更改通知(不实现INotifyCollectionChanged),那么CompositeCollection
就无法知道发生了什么更改。
ObservableCollection<>例如,在这种情况下应该可以正常工作。
我解决了这个问题——这个问题(通常是)是一个白痴程序员(那就是我)。
碰巧集合的Item(单个Product类)有一个被覆盖的ToString()
方法返回了Product实例的Name属性。因此,组合框显示了它应该显示的内容,即产品的名称,只是它是基于ToString()
方法进行的。。。因为我忘记为组合框创建数据模板。难怪对名称的更改没有反映