0

已经浏览了谷歌搜索结果好几个小时了,我发现的只是如何使用 RoutedCommand 捕捉鼠标点击和键盘快捷键来执行相同操作的示例。

我已经阅读了一些有关 RoutedCommand 的资料,例如MSDNhttps://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/,如果我仍然理解正确,它也应该能够做我想做的事需要:

  1. 单击 Window2 中的按钮
  2. Window2中的调用方法
  3. Window1中的调用方法
  4. Window3 etc.pp中的调用方法。

用例将是一个包含语言设置的设置窗口,在设置中单击“确定”后,所有活动窗口都应更改其语言字符串。我提出了一个使用语言标识符重新加载字符串的方法。

所以一般来说,我希望 Window2 中的 ButtonClick 将调用方法“ChangeLanguage(lng)”的命令传递给所有活动的 Windows,无论是父 MainWindow 还是另一个与设置完全无关的 ChildWindow。Window 类有它们自己的 ChangeLanguage() 函数来改变它们自己的字符串。

我想知道在这种情况下使用自定义 EventHandler 是否会更好,并以某种方式使其全局化,因此每个活动窗口都会监听在设置窗口中更改语言时触发的事件。我在这里的另一个问题中找到了一个全局 CommandHandler 的示例,但这不适用于我想的事件。

4

1 回答 1

0
  1. 如果您的视图对象嵌套在根控件中,并且您单击放置在根控件中的按钮,则可以创建 TunnelingRoutedEvent 它将沿着可视树向下移动。在 Window1、Window2 等中,您处理此事件。
  2. 您可以创建静态委托,来自 Window1、Window2 等的方法将加入其中,一旦调用委托,所有关联的方法也会被调用。
  3. 如果您使用的是 PRISM,CompositeCommand就是您要寻找的。
于 2015-07-16T14:16:19.033 回答