1. ホーム
  2. c#

[解決済み] ICollectionViewとObservableCollectionのどちらをバインドするか?

2023-04-24 01:43:37

疑問点

を結合する必要がありますか? DataGrid

ICollectionView = CollectionViewSource.GetDefaultView(collection)

または

ObservableCollection<T> collection; ???

MVVMのベストプラクティスとその理由は何ですか?

どのように解決するのですか?

あなたは 常に にバインドされます。 ICollectionView にバインドされます。

があると仮定します。

var collection = new ObservableCollection<string>();
var collectionView = CollectionViewSource.GetDefaultView(collection);

この場合,バインディングは collection または collectionView は同じものです。バインディングエンジンはデフォルトのコレクションビュー (これは参照番号が collectionView にバインドするように指示した場合、バインドエンジンはデフォルトのコレクションビュー (参照は ) にバインドします。 collection .

これは、あなたの質問に対する答えが "全く違いがない" であることを意味します。

コレクションに直接バインドする場合でも、バインド エンジンはデフォルトのビューにバインドされます。ソート基準などのビューのプロパティを変更すると、コレクションに直接バインドしているように見えるバインディングに影響を与えますが、これは裏ではデフォルト ビューへのバインドであるためです。

デフォルトのコレクション ビュー (すなわち、コレクション自体。デフォルト ビューに明示的にバインドする理由はないため) と同じコレクションの別のビューのどちらにバインドすべきでしょうか。

各ビューが現在のアイテム、ソート基準などの独自の概念を持っていることを考慮すると、同じコレクションに複数のバインドを持つことを意図し、バインドされたコントロールが現在のアイテム、フィルターおよび会社の異なる概念を持つ必要がある場合、望むことは、同じ基礎となるコレクションの複数のビューに明示的にバインドすることであるといえます。