适用于多个Windows的RoutedCommand

时间:2015-07-16 13:54:42

标签: c# wpf xaml routedcommand globalevent

现在已经花了几个小时查看Google搜索结果,我发现的所有内容都是如何使用RoutedCommand捕捉MouseClicks和键盘快捷键来执行相同操作的示例。

我已经阅读了一些关于RoutedCommand的信息来源,例如MSDNhttps://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/,如果我仍然理解它,它也应该能够做我需要的事情:

  1. 单击Window2中的按钮
  2. Window2中的调用方法
  3. Window1中的调用方法
  4. Window3等中的调用方法.pp。
  5. 用例将是一个设置窗口,其中包含语言设置,在设置中单击确定后,所有活动窗口都应更改其语言字符串。我已经建立了一个方法,用语言标识符重新加载字符串。

    所以一般来说我希望Window2中的ButtonClick将Command调用方法“ChangeLanguage(lng)”调用到所有活动的Windows,无论是父MainWindow还是其他与Settings完全无关的ChildWindow。 Window类有自己的ChangeLanguage()函数来改变它们自己的字符串。

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

1 个答案:

答案 0 :(得分:0)

  1. 如果您的视图对象嵌套在根控件上,并且您单击根控件中的按钮,则可以创建将沿着可视树下移的TunnelingRoutedEvent。在Window1,Window2等中,您可以处理此事件。
  2. 您可以创建静态委托,Window1,Window2等方法将连接到该委托,一旦调用委托,也会调用所有相关方法。
  3. 如果您使用的是PRISM, CompositeCommand 就是您要找的。