我試圖在我的WPF應用程序中的任何位置捕獲按鍵事件,而不管哪個UI元素具有焦點。目前我沒有運氣。任何人都可以提出一些我可能沒有嘗試過的策略嗎?或者,理想情況下,提供一個答案,如「哦,這很容易,你只是這樣做」。WPF應用程序廣泛捕獲關鍵的向上/向下事件
這是一個分佈式應用程序,它有一個聊天系統。我正在尋找的效果是,用戶可以隨時開始輸入聊天消息,而無需切換到標準聊天框。我將使用FormattedText對象自己在應用程序中顯示它們的消息。這很重要,因爲這意味着應用程序中沒有任何文本輸入元素。
我的XAML結構大體類似:
<MainWindow>
<Canvas 1>
<Canvas 2>
<Image 1 />
</Canvas 2>
<Image 2 />
</Canvas 1>
</MainWindow>
我編程方式添加元素融入帆布2,和操作圖片2,這就是爲什麼它有一個結構。我已經嘗試將KeyDown,KeyUp和預覽事件添加到MainWindow和Canvas 1,但它們都不會觸發(我檢查斷點)。在閱讀了另一個相關的問題之後,我也嘗試在Loaded()方法中手動設置主窗口的焦點。
我知道有這個網站的許多相關的問題,但他們並沒有幫助我,因爲:
- 沒有任何答案(將我的問題回答?)
- 他們承擔文本輸入小部件,並有興趣在冒泡事件
- 他們想要一個鍵的少量鍵 - 我想捕獲任何鍵
- 他們有興趣檢測控制/ shift/alt鍵是否關閉後他們已經捕獲了事件
感謝您花時間閱讀我長篇大論的帖子,並感謝您的建議。
更新(在Rachel的評論之後)當我放入一個TextBox並將焦點設置到TextBox中時,MainWindow級別上的一個關鍵事件方法將會觸發。因此,它可以像廣告一樣工作。
但是,我真的很想在應用程序中沒有明確的文本輸入小部件。我希望用戶能夠開始輸入以撰寫郵件。
另請參見我的答案在這裏:http://stackoverflow.com/a/42484932/2025364 – 2017-02-27 11:45:00