2012-04-18 52 views
6

我有一個應用程序,其中有一個UserControl帶有一個工具欄。此工具欄有一個按鈕Execute,該按鈕又將其命令綁定到視圖模型作爲屬性公開的派生類。現在將鍵盤快捷鍵綁定到WPF視圖模型中的命令中

<Button Grid.Row="0" Command="{Binding ExecuteCommand}">Execute</Button> 

,我想這個綁定到一個鍵盤快捷鍵(F5)爲好。這需要在UserControl的上下文中進行綁定,因爲它只適用於此時usercontrol可見的情況。

另一種選擇是將其綁定到實際包含執行文本的文本框的KeyDown,但我真的很不穩,當談到如何路由從控制事件的命令,在視圖模型沒有真正醜陋的黑客在usercontrol的後臺代碼中。

任何指針表示讚賞!

+0

可能重複的[WPF中的鍵盤快捷鍵](http://stackoverflow.com/questions/1361350/keyboard-shortcuts-in-wpf) – 2012-04-18 12:38:33

+1

它沿着相同的路線,但它不是真的同樣的問題。這將介紹如何綁定標準命令,同時將自定義命令綁定到視圖模型中的屬性。解決方案結果相似,但仍然不同。 – Dervall 2012-04-18 12:45:19

+0

@DanielHilgarth:是的,我不認爲它是重複的,或者至少在其他問題中提供的解決方案很差(這是MVVM問題的WinForms解決方案)。 – user7116 2012-04-18 13:07:10

回答

24

還有一個答案由於某種原因而消失。這工作得很好:

<UserControl.InputBindings> 
    <KeyBinding Key="F5" Command="{Binding ExecuteCommand}" /> 
</UserControl.InputBindings> 

我想如果可能的話給那個傢伙。請再次出現:)

2

Afaik,沒有辦法直接綁定到按鍵,但有一些解決辦法。它看起來像其他人也有這個問題,你見過this post?我的其他建議是看看attached commands