1

基になるコレクションのアイテムへの変更が CompositeCollection に表示されない (または、少なくとも、この CompositeCollection をソースとするコントロールに表示されない)ことを除いて、私は CompositeCollection の理想的なシナリオであると考えていました。

EDIT 1 : 基になるコレクションは両方とも ObservableCollections です。
EDIT 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>
4

2 に答える 2

0

私はそれを修正しました-問題は(ほとんどの場合そうであるように)ばかプログラマー(それは私でしょう)でした。

コレクション (個々の Product クラス) の Item にはToString()、Product インスタンスの Name プロパティを返すオーバーライドされたメソッドがありました。そのため、コンボボックスは、メソッドに基づいてそれを行っていたことを除いて、製品の名前である表示されるべきものを表示していましたToString()...コンボボックスのデータテンプレートを作成するのを忘れたためです。名前の変更が反映されなかったのも不思議ではありません

于 2013-07-16T20:32:41.687 に答える