ロケーター パターンと MVVM-Light ライブラリを使用するように変換しようとしている既存の Silverlight 4 アプリケーションがあります。
私の理解では、MvvmLocator クラスは各ビュー モデルへの参照を保持し、各ビューの DataContext をロケーター内の適切な ViewModel にバインドできるようになっています。
私のアプリケーションはナビゲーション フレームを使用するため、アプリの各ページはコンテンツ フレームに読み込まれる UserControl です。
各ページ ビューをロケーターの適切な ViewModel にバインドするのがいかに簡単かはわかりますが、私の問題は、複数のコンテキストで再利用される独自のビュー モデルを持つ他の UserControls があり、各インスタンスがのコントロールが同じ究極のビュー モデル インスタンスにバインドされました。
たとえば、2 つのユーザー コントロールで構成される検索ページがあります。1 つ目は、相互に依存する複数のコンボ ボックスと検索ボタンを含む検索パラメーター コントロールです。2 つ目は、結果グリッド自体です。これら 2 つのコントロールを含むページのビュー モデルは、それらの間の通信を処理します。問題は、この検索コントロールが他のページでも使用され、それらすべてが同じビュー モデル インスタンスを使用すると、あらゆる種類の頭痛の種になることです。したがって、通常の「DataContext={Binding ProductSearch, Source={StaticResource Locator}}」を使用することは問題外のようです...
他の誰かがこれに遭遇したか、それを解決するための素晴らしいアイデアを持っていますか? コントロールが使用されているページごとに、ロケーターを変更してビュー モデルの新しいインスタンスを作成できるのではないかと考えています。そうしないと、ページ遷移ごとにクリーンアップを強制することはできますが、ページ間の状態を保存することはできません。
私は Silverlight と MVVM の世界全体に慣れていないので、これがどのように構成されるべきかについて何かが欠けているか、自分自身を隅に追いやったのかもしれません。よくわかりません。どんな提案でも大歓迎です。