我是tryiong來添加快捷方式到我的菜單項目,但它不接縫工作。我的快捷方式不起作用
這裏是我的菜單項:
<MenuItem Name="openMenuItem" Header="Open file" InputGestureText="Ctrl+O" Command="{Binding OpenFile}"></MenuItem>
什麼我錯在這裏做什麼?
這裏是我的菜單的畫面:
我是tryiong來添加快捷方式到我的菜單項目,但它不接縫工作。我的快捷方式不起作用
這裏是我的菜單項:
<MenuItem Name="openMenuItem" Header="Open file" InputGestureText="Ctrl+O" Command="{Binding OpenFile}"></MenuItem>
什麼我錯在這裏做什麼?
這裏是我的菜單的畫面:
在回答這個問題,你專門問:
我在做什麼錯在這裏?
我帶你到documentation for the InputGestureText
property:
此屬性不與菜單項輸入手勢關聯;它只是添加文本到菜單項。
它表現爲設計的。 InputGestureText
只是在菜單項上顯示一些文字;它不會改變行爲,特別是,它實際上並不會聽取關鍵手勢。這有些出乎意料,因爲WinForms 中的相應屬性的確添加了行爲,但它也被屬性名稱上的Text
後綴調出 - 它不是輸入手勢,它只是顯示給的文本告訴用戶關於輸入手勢。當你使用RoutedUICommand時它會自動設置,但是當你自己實現ICommand時,你可以設置InputGestureText
並監聽關鍵手勢。
你做錯了什麼是期待這個屬性直觀的行爲。你不是唯一一個被這個困惑的人。 (明顯的後續問題是「如何爲我的MVVM命令添加鍵盤快捷鍵」,但這是一個單獨的問題 - 並且多次在StackOverflow上詢問和回答;一旦知道這是正確的問題是問,你應該能夠搜索現有的答案。)
據尼克在:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/d5536d93-b570-4e21-8668-641fa519cd95/你需要添加代碼,使其快捷響應,就像這樣:
public Window1()
{
FilterCommand.InputGestures.Add(new KeyGesture(Key.O, ModifierKeys.Control));
InitializeComponent();
}
有關於打開和關閉以及其他常用命令的預定義命令。看一看:ApplicationCommands
你會碰到這樣的:
<Menu DockPanel.Dock="Top">
<MenuItem Command="ApplicationCommands.Paste" Width="75" />
</Menu>
當你說「它似乎不工作」,這是否意味着你會得到一個錯誤信息,一個例外,在VS的消息輸出窗口什麼都沒有? – madd0
不,這意味着當我按下ctrl + o時沒有任何事情發生,但是當我用鼠標點擊時,菜單正常工作。 – Sulby
這可能有助於http://stackoverflow.com/questions/5329292/why-doesnt-setting-menuitem-inputgesturetext-cause-the-menuitem-to-activate-whe – V4Vendetta