簡體   English   中英

適用於多個Windows的RoutedCommand

[英]RoutedCommand for multiple Windows

一直在研究Google的結果已有好幾個小時,我發現的所有示例都是如何使用RoutedCommand捕獲MouseClicks和Keyboard Shortcuts來執行相同操作的示例。

我已經閱讀了一些有關RoutedCommand的資源,例如MSDNhttps://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/ ,如果我仍然理解正確的話,它也應該能夠做我想做的事情需要:

  1. 單擊Window2中的一個按鈕
  2. Window2中的調用方法
  3. Window1中的調用方法
  4. 在Window3 etc.pp中調用方法。

用例將是一個包含語言設置的“設置”窗口,在設置中單擊“確定”后,所有活動窗口都應更改其語言字符串。 我提出了一個方法,該方法可以重新加載帶有語言標識符的字符串。

因此,總的來說,我希望Window2中的ButtonClick將命令傳遞給所有活動的Windows調用方法“ ChangeLanguage(lng)”,無論是父MainWindow還是根本不與Settings相關的另一個ChildWindow。 Window類具有自己的ChangeLanguage()函數來更改自己的字符串。

我不知道在這種情況下使用自定義EventHandler是否會更好,並且以某種方式使其全局化,因此每個活動Window都將偵聽在Settings Window中更改語言時觸發的Event。 我在這里的另一個問題上找到了一個全局CommandHandler的示例,但不適用於我想的事件。

  1. 如果您的視圖對象是使用根控件嵌套的,並且單擊了放置在根控件中的按鈕,則可以創建TunnelingRoutedEvent,它將在可視樹中顯示。 在Window1,Window2等中,您可以處理此事件。
  2. 您可以創建靜態委托,Window1,Window2等中的方法將加入其中,並且一旦調用委托,所有關聯的方法也會被調用。
  3. 如果您正在使用PRISM,則需要CompositeCommand

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM