2012-02-29 21 views
3

どのように私は、このコードのために、例えばメニュー用shortKeyを設定することができます。私ははCtrl-Sを押したときに、他の言葉でメニューのショートカットを設定するにはどうしたらいいですか?

<Menu > 
    <MenuItem Header="File" > 
     <MenuItem Header="Save" ToolTip="Ctrl + S" Click="Save_Click"/> 
     <MenuItem Header="Save As" ToolTip="Ctrl + S + Shift" Click="SaveAs_Click"/> 
     <MenuItem Header="SelectAll" ToolTip="Ctrl + A" Click="SelectAll_Click"/> 
    </MenuItem> 
</Menu> 

、Save_Clickはそうで引き上げるとなります。

+0

あなたはあなたのShortKeysはだけで、あなたのからのアクセスがしたいですか窓からでも、デスクトップからでも? – GaaRa

答えて

2

。しかし、独自のICommand実装を書くことを避けたい場合は、SaveおよびSaveAsコマンドにCommandBindingを追加できます。

<Window x:Class="MenuShotCuts.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.CommandBindings> 
     <CommandBinding Command="ApplicationCommands.Save" 
         Executed="SaveCommandHandler" 
        /> 
    </Window.CommandBindings> 
    <!-- implementation --> 
</Window> 

あなたにものMenuItemのCommandプロパティを変更する必要があります:背後にあるコードで

<MenuItem Header="Save" ToolTip="Ctrl + S" Command="ApplicationCommands.Save"/> 

// Save executed handler 
private void SaveCommandHandler(object sender, ExecutedRoutedEventArgs e) 
{ 
    // do something 
} 
3

私は最善の方法は、後ろにコードでWPF Commandパターン

<Window x:Class="MenuShotCuts.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.InputBindings> 
     <KeyBinding Key="S" Modifiers="Ctrl" Command="{Binding SaveCmd}" /> 
    </Window.InputBindings> 
    <Grid> 
     <Menu > 
      <MenuItem Header="File" > 
       <MenuItem Header="Save" ToolTip="Ctrl + S" Command="{Binding SaveCmd}"/> 
      </MenuItem> 
     </Menu> 
    </Grid> 
</Window> 

を使用することであると思う:イゴールが言ったように

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     this.DataContext = this; 

     m_saveCmd = new SaveCommand(); 
    } 

    private SaveCommand m_saveCmd; 
    public SaveCommand SaveCmd 
    { 
     get 
     { 
      return m_saveCmd; 
     } 
    } 
} 

public class SaveCommand : ICommand 
{ 
    #region ICommand Members 

    public bool CanExecute(object parameter) 
    { 
     return true; 
    } 

    public event EventHandler CanExecuteChanged; 

    public void Execute(object parameter) 
    { 
     MessageBox.Show("Saved", "Info"); 
    } 

    #endregion 
} 
関連する問題