2017-03-15 81 views
0

我們有一個通過ElementHost託管在Win Form中的WPF組件(用戶控件)。 WPF的組件通過在Win Form中託管WPF時的鍵綁定問題

ElementHostControl.Child = wpfFrame

定義爲ElementHost的的孩子有,我們想從贏到表格WPF形式通過某些鍵綁定。我們通過KeyBinding()來做到這一點。然後我們將鍵綁定分配給 WPFFrame.InputBindings.add(curBinding);

儘管我沒有測試所有這些組合,但它與大多數組合鍵一樣。但Ctrl + B,Shift + P等似乎一切正常。

但我嘗試Shift +(左箭頭鍵),它不工作。有趣的是,當我在獨立的WPF應用程序中嘗試它時,它按預期做了這項工作。

我確保通過完全相同的代碼的數據流,但爲什麼Shift + P的作品,而Shift + < - 不?現在我在WPF Commend中設置了一個斷點並從Win Form運行它。我使用鍵綁定來觸發另一個命令,然後使用Ctrl + < - 觸發其實際「有時」工作的有問題的命令。如果我刪除斷點並按Ctrl + < - 那麼它永遠不會觸發相關的命令。

我懷疑這是WPF和Win窗體之間的集成問題,因爲Shift + < - 在WPF中工作。

任何輸入讚賞。

+0

這可能是一個焦點問題。如果鍵盤焦點不在WPF元素上,那麼它可能不會收到關鍵事件。您可能需要使用WPF元素上的'RaiseEvent'來轉發關鍵事件:http://stackoverflow.com/a/1646568/476048 –

回答

0

這確實是一個焦點問題。設置一個斷點和這一行: var v = Keyboard.FocusedElement;

在運行時顯示焦點被各種元素竊取。我需要選擇其中的幾個,並在XAML中設置 Focusable =「False」 。問題修復!