に結合しません。エキスパンダーが展開されたら、内側のリストボックスのItemsSource
プロパティを設定します(これはバインドを使用するのではなく、この操作は非常に遅く、アイテムを表示するように選択した場合にのみ必要です)。内側のリストボックスはうまく描画されますが、実際にはコレクションのCollectionChanged
イベントに登録されていません。私はIEnumerable
の代わりにICollection
でこれを試しました。INotifyPropertyChanged
を加え、INotifyCollectionChanged
をINotifyPropertyChanged
に置き換えました。私が実際にこれを動作させる唯一の方法は、私のSomeCollection
クラスを抹消し、ObservableCollection<SomeItem>
から継承することです。 ObservableCollection
の代わりに私自身のINotifyCollectionChanged
の役割を果たそうとする私の推論は、実際のコードでCOMコレクションをラッピングするためです。そのコレクションは追加/変更/削除時に通知され、これらをWPF用のINotify
イベントに変換しようとしています。WPFリストボックスは、私は、次のテストコードを有するINotifyCollectionChangedまたはINotifyPropertyChangedのイベント
希望はこれで十分です(後半)。
あなたは 'INotifyCollectionChanged'の動作を十分に実装しておらず、' INotifyPropertyChanged'を実装していないからです。 'ObservableCollection'から継承するように 'SomeCollection'を変更して、あなたのために多くのことをやっている方が良いので、特定の理由を調べることはおそらく調査する価値がありません。なぜ車を再発明するのですか?必要に応じてメソッドをオーバーライドして、その動作をカスタマイズすることもできます。 –
ラップしようとしているCOMコレクションの詳細がありますか?私はあなたのCOMコレクションをObservableCollectionに変換する方法を尋ねるべきだと思います。 – Iain