2011-11-22 58 views
1

我是tryiong來添加快捷方式到我的菜單項目,但它不接縫工作。我的快捷方式不起作用

這裏是我的菜單項:

<MenuItem Name="openMenuItem" Header="Open file" InputGestureText="Ctrl+O" Command="{Binding OpenFile}"></MenuItem> 

什麼我錯在這裏做什麼?

這裏是我的菜單的畫面:

enter image description here

+0

當你說「它似乎不工作」,這是否意味着你會得到一個錯誤信息,一個例外,在VS的消息輸出窗口什麼都沒有? – madd0

+0

不,這意味着當我按下ctrl + o時沒有任何事情發生,但是當我用鼠標點擊時,菜單正常工作。 – Sulby

+0

這可能有助於http://stackoverflow.com/questions/5329292/why-doesnt-setting-menuitem-inputgesturetext-cause-the-menuitem-to-activate-whe – V4Vendetta

回答

3

在回答這個問題,你專門問:

我在做什麼錯在這裏?

我帶你到documentation for the InputGestureText property

此屬性不與菜單項輸入手勢關聯;它只是添加文本到菜單項。

它表現爲設計的。 InputGestureText只是在菜單項上顯示一些文字;它不會改變行爲,特別是,它實際上並不會聽取關鍵手勢。這有些出乎意料,因爲WinForms 中的相應屬性的確添加了行爲,但它也被屬性名稱上的Text後綴調出 - 它不是輸入手勢,它只是顯示給的文本告訴用戶關於輸入手勢。當你使用RoutedUICommand時它會自動設置,但是當你自己實現ICommand時,你可以設置InputGestureText並監聽關鍵手勢。

你做錯了什麼是期待這個屬性直觀的行爲。你不是唯一一個被這個困惑的人。 (明顯的後續問題是「如何爲我的MVVM命令添加鍵盤快捷鍵」,但這是一個單獨的問題 - 並且多次在StackOverflow上詢問和回答;一旦知道這是正確的問題是問,你應該能夠搜索現有的答案。)

2

據尼克在: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(); 
} 
+1

那麼在例如大公正在使用的RoutedCommand但我綁定到ICommand。那我會怎麼做? – Sulby

+0

有沒有辦法將輸入手勢添加到'ICommand',例如所謂的'RelayCommand'或'DelegateCommand'? – JobaDiniz

1

有關於打開和關閉以及其他常用命令的預定義命令。看一看:ApplicationCommands

你會碰到這樣的:

<Menu DockPanel.Dock="Top"> 
    <MenuItem Command="ApplicationCommands.Paste" Width="75" /> 
    </Menu> 
相關問題