2010-12-10 10 views
0

私はプリズム/シルバーライトのビューを持っており、それは私のシェルのタブコントロール内のタブアイテムにマッピングされています。 このように見えます。Prism/Silverlightでビューモデルの複数のインスタンスを作成

<sdk:TabControl> 
    <sdk:TabItem Header="User Portfolio" Regions:RegionManager.RegionName="MainRegion" /> 
    <sdk:TabItem Header="Benchmark Portfolio" Regions:RegionManager.RegionName="BenchRegion" /> 
</sdk:TabControl> 

ビューはデータグリッド、テキストボックス、およびそのようなボタンから構成データグリッドのviewmodelでのObservableCollection、ボタンがクリックされたときに、テキストボックス内のテキストは、データグリッドに追加されるにマップ(および対応しますコレクション)。

ここで、このview-viewmodelペアの複数のインスタンスを宣言したいと思います。つまり、Tabitem "MainRegion"では、1つのインスタンスが必要です。 Tabitem "BenchRegion"で別のインスタンスが必要です

どうすればいいですか?

答えて

0

コンテナを取得する必要があります。ビューモデルのインスタンスごとに、IUnityContainer.ResolveType<>()を使用してインスタンスを初期化する必要があります(最初にタイプを登録することを確認してください)IUnityContainer.RegisterType<>()。あなたはResolveType<>()をプリズムのコンストラクタの形と考えることができます。次に、各ビューに対して、そのビューの初期化されたビューモデルにdatacontextを設定する必要があります。

編集私はこれがPrism 2.0用であることに注意してください.Prism 4.0では、統一の選択肢があります。

+0

これはおそらく暗示されていますが、最後にそれぞれのビューをそれぞれの領域に追加する必要があります。別の方法として、ビュータイプを各地域に登録させる方法があります。そのようにリージョンが表示されると、ビューのインスタンス(ビューの依存関係としてビュー・モデルを正しく実行すると、ビュー・モデル)が各リージョンごと自動的に作成されます。 –

+0

はい私は彼が地域を使用していた場合、彼は地域にビューを追加することを知っていたと仮定しました:) –

関連する問題