0

私は、MVVM (一種) で作成された C#/WPF でかなり大きなアプリケーションを持っています。リストビューでは、選択したアイテムにバインドされた IsSelected を使用します。これらの IsSelected プロパティは、ViewModel ではなく、アプリのモデルにあります。

現在、ビジネス オブジェクト (ビュー モデルではなくモデル) 内の 1 つのリストを指すビューモデルは 1 つしかありませんが、将来的にはこれを変更する可能性があり、モデル内の IsSelected プロパティを使用することはできなくなります (そうしないと、両方のビューモデルが同じ選択項目)。

選択モードは複数で、1 ~ 128 (リストの最大長) 項目の範囲で指定できます。

どうにかしてビューモデルの中にあるべきだと思いますが、どうすればこれを達成できますか?

4

1 に答える 1

4

MVVM を使用する場合、単一のビュー モデルに制限されません。はい、ビュー モデルからモデルの一部を公開することはできますが、他のビュー モデルを公開することもできます。

この場合、コレクションのインスタンスを独自のビュー モデルにラップし、アイテム テンプレートのバインディング ルートをそれに設定することをお勧めします。

たとえば、モデルのコレクションにデータ バインディングを行っている場合、それらの各モデルのインスタンスを、モデルをラップするビュー モデルに渡し、ビュー モデルでIsSelectedfor バインディングを公開することができます。

于 2012-08-31T12:15:42.077 に答える