WPF路由命令和ShowDialog窗口
我想知道如何通过ShowDialog打开的窗口在Visual Tree中处理。
例如,窗口A通过ShowDialog打开窗口B. 在窗口B上触发路由命令时,窗口A不会接收到该命令(即使它正在侦听)。
有什么办法可以做到这一点?
谢谢! 乔恩
我们在应用程序中始终遇到这种情况。 我们使用Window.Owner属性和ICommandSource.CommandTarget属性来实现此目的。
例如,在窗口A中:
DialogWindow windowB = new DialogWindow();
windowB.Owner = this;
windowB.ShowDialog();
然后,在DialogWindow中,所有执行命令的控件都将其CommandTarget绑定到父窗口的Owner:
<Window x:Class="DialogWindow" x:Name="wnd">
<Button Command="SomeCommand" CommandTarget="{Binding Owner, ElementName=wnd}"/>
</Window>
或者,如果您从窗口B内的代码执行:
SomeCommand.Execute(params, this.Owner);
CommandTarget将让Window A监听CanExecute和Execute。
链接地址: http://www.djcxy.com/p/56193.html