带有快捷方式和自定义RoutedCommand的WPF菜单

时间:2010-06-15 10:12:37

标签: c# wpf shortcuts routedcommand

我是WPF的新手,所以我可能会遗漏一些东西。我的MainWindow类中有一个名为StartService的简单函数。我想用快捷键Ctrl + S向我的应用程序添加一个菜单项“Start Service”。我必须做以下事情:

  1. 在我的MainWindow课程中,我必须定义:

    public static RoutedCommand StartServiceRoutedCmd = new RoutedCommand();

  2. 在我的XAML代码中,我添加了:

  3. <MenuItem Header="_Start Service" InputGestureText="Ctrl+S" Click="OnStartService" />
    
    <Window.CommandBindings>
        <CommandBinding Command="{x:Static loc:MainWindow.StartServiceRoutedCmd}" 
                        Executed="OnStartService" />
    </Window.CommandBindings>
    
    <Window.InputBindings>
        <KeyBinding Command="loc:MainWindow.StartServiceRoutedCmd" Gesture="CTRL+S" />
    </Window.InputBindings>
    

    事情正在发挥作用。我想知道这是否是正确和有组织的方式去?我需要一个StopService函数的快捷方式。这是否意味着我需要为我需要的每个快捷方式定义一个新的RoutedCommand StopServiceRoutedCmd,等等?

1 个答案:

答案 0 :(得分:2)

<MenuItem Header="_Start Service" InputGestureText="Ctrl+S" Command="loc:MainWindow.StartServiceRoutedCmd />

<Window.CommandBindings>
       <CommandBinding Command="{x:Static loc:MainWindow.StartServiceRoutedCmd}" 
                Executed="OnStartService" />
       </Window.CommandBindings>

<Window.InputBindings>
       <KeyBinding Command="loc:MainWindow.StartServiceRoutedCmd" Gesture="CTRL+S" />
</Window.InputBindings>