如何使用键盘快捷键打开ContextMenu

时间:2011-11-29 22:23:30

标签: wpf wpf-controls wpfdatagrid

我在一个列标题中使用ContextMenu创建WPF DataGrid,如下所示:

<DataGrid x:Name="grid" ItemsSource="{Binding Path=Orders}">
    <DataGrid.InputBindings>
            <KeyBinding Command="{Binding Path=ShowStatusHeaderContextMenuCommand}"
                        CommandParameter="{Binding ElementName=FristNameContextMenu}"
                        Gesture="Ctrl+S" />
    </DataGrid.InputBindings>
    <DataGrid.Columns>
        <DataGridTemplateColumn Width="30" Header="Status">
            <DataGridTemplateColumn.HeaderTemplate>
               <DataTemplate>
                  <TextBlock x:Name="StatusHeaderTextBlock" Text="Status">
                      <TextBlock.ContextMenu>
                            <ContextMenu x:Name="FristNameContextMenu">
                                <MenuItem Command="{Binding SetCompleteFlagsCommand}" Header="Complete"/>
                                <MenuItem Command="{Binding ClearDeleteFlagsCommand}" Header="Deleted" />
                            </ContextMenu>
                      </TextBlock.ContextMenu>
                  </TextBlock>
               </DataTemplate>
            </DataGridTemplateColumn.HeaderTemplate>
        </DataGridTemplateColumn>

         <DataGridTextColumn Width="100"
                             Header="Order Number"
                             Binding = "{Binding Path=OrderNumber}"/>
    <DataGrid.Columns>
</DataGrid>

如果我右键单击Status列标题,它会调出ContextMenu。但我想添加一个快捷键“Control + S”来调出ContextMenu。有谁知道如何添加它?

由于

1 个答案:

答案 0 :(得分:1)

创建一个command,打开上下文菜单,并将KeyBinding与该命令和您的手势添加到控件的InputBindings,其范围应该应用快捷方式。

(另外:Ctrl+S按照约定“保存”,我不确定你是否真的想将它用于上下文菜单)