対応するウィンドウを開いたときに、プリズムの ViewModelLocator によって作成された ChildViewModel インスタンスを識別する方法はありますか?
MasterViewModel からのパラメーターに基づいて、ChildViewModel がそのデータをロードする必要があることをトリガーしたいと思います。
コードでMasterViewModel
は、 in には、イベントを発行して新しい子ウィンドウを開くことを要求するICommand
in a があり、対応するサブスクライバーがあります。
public ICommand OpenNewChildWindow()
{
Publish(new OpenNewChildWindowPubSubEvent());
// Maybe I can publish a new PubSubEvent here
// but how can I target just the recently created ChildViewModel?
}
MasterViewModel
は UI 実装について何も知らないことに注意してください。
サブスクライバーは、渡されたビューモデルに対応するビュー (この例ではウィンドウ) を基本的に解決するShowWindow
カスタムのメソッドを呼び出します。WindowManager
public void ShowWindow(Type viewModelType)
{
Type view = ResolveView(viewModelType);
Window w = (Window)Activator.CreateInstance(view);
w.Show();
}
適切なウィンドウの xaml
ViewModelLocator.AutoWireViewModel="True"