我有一个带有一些标签的窗口,在每个标签中我都可以创建一个新项目 我想定义一个用于创建新项目的快捷键。但我希望我的短键工作在活动选项卡上 例如,当Tab1处于活动状态时,我的短按键在Tab1中创建项目或Tab2处于活动状态时,我的短按键在Tab2中创建项目。如何在活动标签上使用一个短按键?
答案 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");
}
我不会考虑这个生产代码,但希望它能指出你正确的方向。