首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CompositeCollection不传播底层集合中的更改

CompositeCollection不传播底层集合中的更改
EN

Stack Overflow用户
提问于 2013-07-10 15:09:44
回答 2查看 1.1K关注 0票数 1

我有一个我认为是CompositeCollection的理想场景,只不过对基础集合项的更改似乎没有出现在CompositeCollection中(或者至少没有出现在该CompositeCollection的源代码的控件中)。

编辑1:两个基础集合都是ObservableCollections。

编辑2:添加新的/更新的项,但该项的内容没有反映在组合框的下拉区域中。每个项目都实现了INotifyPropertyChanged。

我是不是做错了什么,还是没有得到支持?

我现在拥有的是:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-16 20:32:41

我修复了它-问题是(因为它经常是)一个白痴程序员(那将是我)。

碰巧集合的项(单独的Product )有一个overriden ToString()方法返回Product的Name属性。因此,组合框显示了它应该显示的内容,即产品的名称,但它是基于ToString()方法进行的.因为我忘记为ComboBox创建一个DATATEMPLATE。怪不得名字的变化没有反映出来。

票数 0
EN

Stack Overflow用户

发布于 2013-07-10 15:57:36

Products.StandardCustomProducts是什么类型的集合?如果它们没有更改通知(不要实现INotifyCollectionChanged),那么CompositeCollection就无法知道发生了什么变化。

例如,在这个场景中,ObservableCollection<>应该工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17574295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档