Mvvm Light Devotees の皆さんは、次の状況にどのように対処しますか? 「子」ビューモデルの独自のインスタンスを使用する「マスター」ビューモデルがいくつかあります。すなわち
子 ViewModel - "OrderLineItemListViewModel" 注文の品目リストのビューモデル。
親 ViewModel - "OrderDetailViewModel" 注文のビューモデル。親ビューモデル - 「OrderChargeViewModel」は、注文を請求するためのビューモデルです。
両方の親 ViewModel に OrderLineItems のリストが必要であり、両方を同時に開くことができます。現在、親ViewModelに子ViewModel型のプロパティが含まれており、それを参照できるように設定しています。
public class ChildViewModel
{
public ChildViewModel()
{
Items = new ObservableCollection<ListItemViewModel>
{
new ListItemViewModel("One"),
new ListItemViewMOdel("Two")
}
}
public ObservableCollection<ListItemViewModel> Items {get; private set;}
}
public class ParentViewModel
{
public ParentViewModel()
{
ChildViewModel = new ChildViewModel();
}
public ChildViewModel ChildViewModel {get; set;}
}
<Window>
<DataGrid ItemsSource={Binding ChildViewModel.Items} />
</Window>
今、私は ViewModelLocator と Messaging でこれを行う方法があるはずだと感じていますが、そうするためのきれいな方法を見つけていません。ViewModelLocator を使用して ViewModel の非シングルトン インスタンスを作成する方法を知っているので、問題ありません。ただし、親ViewModelが子ViewModelメッセージに応答し、メッセージが「その」子ViewModelからのものであり、したがって対処する必要があるかどうかを知る方法はわかりません。
これを処理する方法について誰かアドバイスがありますか、それとも今のやり方を続けるべきですか? 私が考えている最大の部分は、現在、ViewModelLocator を選択的に使用していて、それが最終的に直感的になるかどうかわからないということです。