2

BindingListをリストボックスに双方向でバインドしています。バインディングリストには、アイテムがバインディングリストに追加または削除された場合にのみリストボックスを更新する画像が多数含まれています。アイテムが変更されたときにバインディングリストがlistchangedイベントも発生させるようにするにはどうすればよいですか?

編集:私が抱えている問題は、オブジェクトのプロパティが変更されておらず、ベースオブジェクトが変更されていないことです。

BindingList<ImageSource>();

ただし、これを行った場合、これは機能しません。

BindingList<Image>();

次に、バインディングパスをImage.Sourceに設定すると、正しく更新されます。これは、Imageのプロパティが変更されたためですが、最初の例の場合、リスト内の直接アイテムのみが変更されています。では、2番目の例と同じ動作をどのように取得できますか?

最終編集: BindingListの代わりにObservableCollectionを使用すると、この問題が修正されるようです。コレクションの変更を通知するのは同じだという印象を受けました。以下の完全な答え

4

2 に答える 2

2

リストはそのイベントを発生させますが、基礎となるアイテムがを介して適切な通知を提供する場合に限りますINotifyPropertyChanged

于 2011-11-05T12:55:49.727 に答える
2

BindingListはObservableCollectionとは異なり、BindingListは直接のアイテムが変更されたことを通知しません(アイテムがコレクションに追加またはコレクションから削除された場合を除く)。ただし、ObservableCollectionは、INotifyCollectionChangedおよびINotifyPropertyChangedインターフェイスを実装します。これは、ObservableCollectionの直接アイテムへの変更がUIに報告されることを意味します。

バインディングを使用してアイテムを送信していて、それらのアイテムのプロパティではなくアイテムを更新する必要がある場合は、ObservableCollectionを使用する必要があるようです。別の解決策は、BindingListから派生し、INotifyCollectionChangedを実装することです。

私は専門家ではありませんが、これは私が過去1時間に収集したものです。誰かが追加または修正するものがある場合は、私に知らせてください。

于 2011-11-05T21:13:32.263 に答える