2009-05-12 5 views
2

私はビジネスオブジェクトを持っています。顧客に言うと、1つのページに表示するフィールドが多すぎますので、別のタブページに分割します。データは意味のあるビット(アドレス、状態、通りの名前など)に分割することができないため、同じモデルとビューモデルを保持し、異なるビューを持つことにしました(各タブページのコンテンツは別のビュー)が同じビューモデルにバインドされます。ユニティーを使用して同じビューモデルを子ビューに渡す方法は?

まず第一にこれは正しいアプローチですか、なぜですか?

2番目に、一致する場合、どのようにして統一を使用しますか同じビューモデルを子ビューに渡しますか?現時点ではコンストラクタインジェクションを使用していますが、ビューモデルの新しいインスタンスです。

乾杯、

アリ

答えて

6

あなたはプリズムを使用している場合、あなたはRegionContextを使用することができます。

TabControlのためRegionContextを指定します。

<TabControl cal:RegionManager.RegionName="MyTabControl" 
cal:RegionManager.RegionContext="{Binding Path=ViewModel}"> 

そしてRegionContextに静的GetObservableContextメソッドを使用して、このリージョンに追加ビューからアクセス:

void ViewConstructor() 
{ 
this.ViewModel = (MyViewModel)RegionContext.GetObservableContext(this).Value; 
} 

あなたはプリズムを使用していない場合は、あなたが登録できます名前付きインスタンスとしてのViewModel:

Container.RegisterInstance<IMyViewModel>("viewModelName", new MyViewModel()); 

およびg後で使用する:

Container.Resolve<IMyViewModel>("viewModelName"); 
関連する問題