2

適用可能なビュー モデルのリストが必要であり、複合コレクションを作成するか、それらが継承する共有インターフェイスを作成するかを検討しています。1 つの方法が優先されますか?

複合コレクションは、基礎となるコレクションから独立したアイテムのインデックスを維持しているため、複合コレクションのアイテム # 0 (アイテム タイプ A) 1 (アイテム タイプ B) 2 (アイテム タイプ A) 3 (アイテム タイプA) を入力し、リスト内の順序を維持します。

2 つの方法に大きな違いはありますか?

私が通常行っていることをもう少し詳しく説明したいと思いました。通常、selectedItems のリストが必要です。Object 型の ObservableCollection を作成し、データ型に基づいてツリービューに異なるデータ テンプレートを適用させることができます。ただし、型の安全性を確保し、コレクション内でオブジェクトがスローされるだけではないことがわかっている方がよいと考えたため、代わりにインターフェイスを実装しました。しかし、インターフェースを実装するオブジェクト間で十分な共有プロパティがなく、共有インターフェースを作成しようとするのはばかげていると感じることがあります。

考えられる型ごとに個別のリストを使用して複合コレクションを実装する方が理にかなっている可能性があります。

4

1 に答える 1

2

msdn (CompositeCollection)によると:

複数のコレクションとアイテムを 1 つのリストとして表示できるようにします。

これがあなたが必要とするものでない限り(私はそうは思わない)、あなたはに行くべきですObservableCollection<T>. これは汎用的であるため、不必要でエラーが発生しやすいキャストを回避できます。要素をキャストする必要がなくなると、値の型で使用した場合 (つまり、ボックス化/ボックス化解除なし) にパフォーマンスが向上します。

また、ビュー モデルについて詳しく知らなければ、すべてのビュー モデルに共有インターフェイスを実装させることが適切なオプションであるかどうかを判断するのは困難です。自問してみてください:それは理にかなっていますか?彼らの間に本当に関係はありますか?コレクションのクライアントは、実際の型に関係なく、そのインターフェイスのインスタンスを同等に扱うことができますか?

于 2013-11-13T22:55:04.457 に答える