5

ObservableCollection のインスタンスを、2 つの個別のデータ テンプレート (1 つは表示用、もう 1 つは編集用) を持つ WPF リストボックスにバインドしています。編集用のデータ テンプレートには、テキスト ボックスに一方向のバインディングがあり、[保存] ボタンがあります。

[保存] ボタンを押したときに (リスト項目を編集モードにした後)、テキストボックスを変更して ObservableCollection (および表示) の値を置き換えるには、どのような変更を加える必要がありますか?

4

3 に答える 3

9

コレクション内のアイテムは、INotifyPropertyChanged インターフェイスを実装するタイプである必要があります。このようにして、単一項目オブジェクトのプロパティ値が変更されたことがリスト ボックスに通知されます。ObservableCollection は、コレクションが変更された場合 (項目の追加、削除など) にのみ CollectionChanged イベントを発生させます。

ObservableCollection に関する MSDN ライブラリの記事からの引用

バインディング ソース オブジェクトからバインディング ターゲットへのデータ値の転送を完全にサポートするには、バインド可能なプロパティをサポートするコレクション内の各オブジェクトが、INotifyPropertyChanged インターフェイスなどの適切なプロパティ変更通知メカニズムを実装する必要があります。

于 2009-04-29T05:44:58.273 に答える
1

バインドされたクライアントとデータソース間のバインディングで変更通知が発生するようにするには、バインドされたタイプは次のいずれかである必要があります。

  • INotifyPropertyChangedインターフェイスを実装します(推奨)。
  • バインドされたタイプのプロパティごとに変更イベントを提供します。

両方を行わないでください。

ソース:MSDN:INotifyPropertyChangedインターフェイス

于 2009-04-29T12:00:47.527 に答える
1

BindingList<T> クラスを使用して同様の問題を解決しました。

コレクションと個々のアイテムの変更の両方で発生する ListChanged イベントがあります。

.Net 3.5 で導入

于 2011-02-27T11:54:58.720 に答える