我有一個WPF應用程序,我試圖在MVVM模式(儘可能)中實現。我的一個視圖模型的打開一個子窗口使用如下代碼:WPF:在Modal Windows中使用RoutedCommand MVVM方式
SomeChildWindow childWin = new SomeChildWindow();
childWin.DataContext = someChildViewModel;
childWin.ShowDialog();
我遇到的問題是,我使用SomeChildWindow
一個的RoutedCommand是沒有得到好評:
<Button Content="Do Work" Command="root:GlobalCommand.DoWork"/>
GlobalCommand
是一個靜態類,DoWork
是一個RoutedUICommand。我已經DoWork
綁定到代碼中的我的主視圖模型是這樣的:
//Method inside the main view model
public void BindGlobalCommands(Window win)
{
win.CommandBindings.Add(new CommandBinding
(GlobalCommand.DoWork, (s, e) => { this.DoSomeWork(); }));
}
我做了一些研究,我敢肯定,我有同樣的問題,因爲誰問這個問題的人:WPF Routed Commands and ShowDialog Windows。然而,爲這個問題提供的答案要求父視圖模型直接瞭解它自己的視圖,而我的視圖並不是這樣,我正在用正確的MVVM方式產生窗口嗎?
如何在我的子窗口中使用RoutedCommand
?
命令是視圖模型的一部分嗎?如果是這樣,Command不應該使用'{Binding ...}'而不是引用全局命令?請添加更多詳細信息。 –
@ErnodeWeerd,我增加了一些細節。我的意圖是在主視圖模型中存儲一些全局命令的邏輯。這樣任何子控件都可以使用RoutedUICommands來調用全局命令。另外,如果從不同位置調用相同的命令,我想避免重複的代碼。 – DaveS