如何在活动标签上使用一个短按键?

时间:2011-09-25 06:16:25

标签: wpf

我有一个带有一些标签的窗口,在每个标签中我都可以创建一个新项目 我想定义一个用于创建新项目的快捷键。但我希望我的短键工作在活动选项卡上  例如,当Tab1处于活动状态时,我的短按键在Tab1中创建项目或Tab2处于活动状态时,我的短按键在Tab2中创建项目。如何在活动标签上使用一个短按键?

1 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一目标。最常见的是使用命令。首先,这是我使用的XAML:

<Grid>
    <TabControl Grid.Row="0"
                x:Name="AppTabs">
        <TabItem Header="Tab 1">
            <ListBox x:Name="TabOneList" />
        </TabItem>

        <TabItem Header="Tab 2">
            <ListBox x:Name="TabTwoList" />
        </TabItem>
    </TabControl>
</Grid>

以下是代码隐藏:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // create the new item command and set it to the shortcut Ctrl + N
    var newItemCommand = new RoutedUICommand("New Item", "Makes a new item on the current tab", typeof(MainWindow));
    newItemCommand.InputGestures.Add(new KeyGesture(Key.N, ModifierKeys.Control, "Ctrl + N"));

    // create the command binding and add it to the CommandBindings collection
    var newItemCommandBinding = new CommandBinding(newItemCommand);
    newItemCommandBinding.Executed += new ExecutedRoutedEventHandler(newItemCommandBinding_Executed);
    CommandBindings.Add(newItemCommandBinding);
}

private void newItemCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
    // one way to get the ListBox control from the currently selected tab
    ListBox itemList = null;
    if (AppTabs.SelectedIndex == 0)
        itemList = this.TabOneList;
    else if (AppTabs.SelectedIndex == 1)
        itemList = this.TabTwoList;

    if (itemList == null)
        return;

    itemList.Items.Add("New Item");
}

我不会考虑这个生产代码,但希望它能指出你正确的方向。