2

私はビジネス オブジェクトを持っています。たとえば顧客です。フィールドが多すぎて 1 ページに表示できないため、別のタブ ページに分割しています。データは、意味のあるビット (住所、州、通りの名前など) に分割できる方法ではないため、同じモデルとビュー モデルを保持し、異なるビューを持つことにしました (各タブ ページのコンテンツは別のビュー) 同じビュー モデルにバインドします。

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

第二に、もしそうなら、ユニティを使用して同じビューモデルを子ビューに渡すにはどうすればよいですか? 現時点ではコンストラクター インジェクションを使用していますが、それらはビュー モデルの新しいインスタンスです。

乾杯、

アリ

4

1 に答える 1

6

Prism を使用している場合は、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;
}

Prism を使用していない場合は、ViewModel を名前付きインスタンスとして登録できます。

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

後で次を使用して取得します。

Container.Resolve<IMyViewModel>("viewModelName");
于 2009-05-12T06:50:08.193 に答える