ViewModelに関連付けられているWPFウィンドウを知るにはスマートな方法がありますか?WPFとMVVM/MVVMLightでViewModelに関連付けられたウィンドウを検索
私は現在ダイアログサービスを構築しており、所有者を特定のウィンドウに設定する必要があります。私は現在.Owner
プロパティをApplication.Current.MainWindow
にハードコーディングしていますが、私は誰かがこれに似た何かをしてこれをやっているかどうかを調べるためにここをチェックすると思っていました。
Window
タイプを辞書のViewModelに関連付けるには、初期化時にViewModelをキーとしてViewModelLocatorを使用しますか?しかし、それでは?
SettingsWindowViewModel settingsWindowViewModel = new SettingsWindowViewModel
{
Title = "Settings",
Owner = "MainViewModel" or //this;
}
とDialogServiceの定義では、ShowDialog
を:私のMainViewModelを想定し
は私のような私のSettingsWindowViewModel
の特性の一つを渡したいと思い、次のコード
_dialogService.ShowDialog(settingsWindowViewModel);
を呼び出しますそのように定義される:
public bool? ShowDialog(IDialogWindowViewModel dialogViewModel)
{
var win = new WindowDialog
{
Title = dialogViewModel.Title,
Owner = GetWindowByViewModel(dialogViewModel.Owner);
}
}
GetWindowByViewModelは、ウィンドウタイプを含む辞書にアクセスしますが、実際のウィンドウを取得する方法はわかりません。なぜなら、 'タイプ'しかないからです。
return App.Locator.ViewModelLocator.GetWindowByViewModel(owner);
ここで、ownerは、特定のウィンドウタイプに関連付けられたViewModelです。
私はUnity
を使用していたプロジェクトで上記のようなものを見てきましたが、私はこれを見たところ、A)私は思い出すことができないと、b)私はUnity
ではなくMVVMLight
を使用しています。
このようなシナリオを処理するための提案はありますか?