Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Defining MenuItem Shortcuts

I need a simple way to set a shortcut for menu items.

But this don´t work with shortcut, just with click:

<MenuItem Header="Editar">     <MenuItem Header="Procurar" Name="MenuProcurar"               InputGestureText="Ctrl+F"               Click="MenuProcurar_Click">         <MenuItem.ToolTip>             <ToolTip>                 Procurar             </ToolTip>         </MenuItem.ToolTip>     </MenuItem> </MenuItem> 

I am using WPF 4.0

like image 970
Felipe Pessoto Avatar asked Jan 13 '11 17:01

Felipe Pessoto


People also ask

What is the function of a shortcut?

Keyboard shortcuts are generally used to expedite common operations by reducing input sequences to a few keystrokes, hence the term "shortcut". To differentiate from general keyboard input, most keyboard shortcuts require the user to press and hold several keys simultaneously or a sequence of keys one after the other.


1 Answers

H.B. was right... I just wanted to add more precisions.

Remove the Click event on your MenuItem and associate it with a Command instead.

1 - Add/create your commands:

<Window.CommandBindings>      <CommandBinding Command="Open" Executed="OpenCommandBinding_Executed"/>      <CommandBinding Command="SaveAs" Executed="SaveAsCommandBinding_Executed"/> </Window.CommandBindings> 

The commands are refering to the following code:

private void OpenCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e) {     Open();//Implementation of open file } private void SaveAsCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e) {     SaveAs();//Implementation of saveAs } 

2 - Associate the commands with the wanted keys:

<Window.InputBindings>     <KeyBinding Key="O" Modifiers="Control" Command="Open"/>     <KeyBinding Key="S" Modifiers="Control" Command="SaveAs"/> </Window.InputBindings> 

3 - Finally assign the commands with you menu item (InputGestureText is just a decorating text):

<Menu Name="menu1">     <MenuItem Header="_File">         <MenuItem Name="menuOpen" Header="_Open..." Command="Open" InputGestureText="Ctrl+O"/>         <MenuItem Name="menuSaveAs" Header="_Save as..." Command="SaveAs" InputGestureText="Ctrl+S"/>     </MenuItem> </Menu> 

That way multiple inputs may be associated to the same command.

like image 199
Guish Avatar answered Oct 16 '22 12:10

Guish