WPF路由命令和ShowDialog Windows

2 wpf command routed showdialog

我想知道如何在Visual Tree中处理通过ShowDialog打开的窗口.

例如,Window A通过ShowDialog打开Window B. 在窗口B上触发路由命令时,窗口A不接收命令(即使它正在侦听它).

有没有办法让这项工作?

谢谢!乔恩

Rob*_*nee 5

我们在申请中一直遇到这种情况.我们使用Window.Owner属性和ICommandSource.CommandTarget属性.

例如,在窗口A中:

DialogWindow windowB = new DialogWindow();
windowB.Owner = this;
windowB.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

然后,在DialogWindow中,执行命令的所有控件都将其CommandTarget绑定到父窗口的所有者:

<Window x:Class="DialogWindow" x:Name="wnd">
    <Button Command="SomeCommand" CommandTarget="{Binding Owner, ElementName=wnd}"/>
</Window>
Run Code Online (Sandbox Code Playgroud)

或者,如果您从Window B中的代码执行:

SomeCommand.Execute(params, this.Owner);
Run Code Online (Sandbox Code Playgroud)

CommandTarget将让Window A监听CanExecute和Execute.