在我的应用程序中,我使用WPF TabControl
我想处理TabItem
的单击事件。 我如何实现它?如何处理WPF中的TabItem单击事件?
回答
将标题封装在无模板按钮中。
如果您使用的ItemsSource:
<TabControl ItemsSource="{Binding Data}">
<TabControl.ItemTemplate>
<DataTemplate>
<Button Click="Tab_Click">
<Button.Template>
<ControlTemplate>
<ContentPresenter />
</ControlTemplate>
</Button.Template>
<Button.Content>
<!-- Actual header goes here -->
</Button.Content>
</Button>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
如果你有静态的内容,你可以将其插入头部右走:
<TabControl>
<TabItem>
<TabItem.Header>
<Button Click="Tab_Click">
<Button.Template>
<ControlTemplate>
<ContentPresenter />
</ControlTemplate>
</Button.Template>
<Button.Content>
<!-- Actual header goes here -->
</Button.Content>
</Button>
</TabItem.Header>
</TabItem>
</TabControl>
您可以通过添加标签,这样做到tabcontrol中每个tabitem的header属性。然后你可以为标签设置一个事件。
XAML
<TabControl Height="100" HorizontalAlignment="Left" Name="tabControl1">
<TabItem Name="tabItem1">
<TabItem.Header>
<Label Content="tabItem1"
MouseLeftButtonDown="tabItem1_Clicked"
HorizontalAlignment="Stretch"/>
</TabItem.Header>
<Grid />
</TabItem>
<TabItem Name="tabItem2">
<TabItem.Header>
<Label Content="tabItem2"
MouseLeftButtonDown="tabItem2_Clicked"
HorizontalAlignment="Stretch"/>
</TabItem.Header>
<Grid />
</TabItem>
</TabControl>
C#/代码背后
private void tabItem1_Clicked(object sender, MouseButtonEventArgs e)
{
//DO SOMETHING
}
private void tabItem2_Clicked(object sender, MouseButtonEventArgs e)
{
//DO SOMETHING
}
希望这有助于。
这是一个古老的问题,但我在相同的情况下找到答案。
我用的TabControl的(XAML)SelectionChanged事件
<TabControl SelectionChanged="TabControl_SelectionChanged">
后面的代码(C#):
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//Stuff
}
这不是点击自己,而是其令人耳目一新的东西的工作..
这种类型的解决方案给了我一个问题,因为只要tabcontrol中的控件改变选择,它就会触发,而不仅仅是tabcontrol本身的选择。 – 2015-07-14 22:30:14
尝试使用GotFocus
事件查找解决方案。
private void addTabPage_GotFocus(object sender, RoutedEventArgs e)
{
addTabPage(); //method for adding page
TabControlPages.SelectedIndex = TabControlPages.Items.Count - 1; //select added page
TabControlPages.Focus(); //change forcus to selected page
}
方法也添加页面(例如刚)
private void addTabPage()
{
TabItem tc = new TabItem();
tc.Header = "New page";
TabControlPages.Items.Insert(TabControlPages.Items.Count - 1, tc); //insert new page
}
希望这将是有益的
可以在TabControl的使用SelectionChanged事件,并使用开关的情况下做任何你喜欢的。
// XAML代码
<TabControl SelectionChanged="TabControl_SelectionChanged">
<TabItem Header="Item1"></TabItem>
<TabItem Header="Item2"></TabItem>
<TabItem Header="Item3"></TabItem>
</TabControl>
//后台代码
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string tabItem = ((sender as TabControl).SelectedItem as TabItem).Header as string;
switch(tabItem)
{
case "Item1":
break;
case "Item2":
break;
case "Item3":
break;
default:
return;
}
}
您可以通过添加标签的标题属性在TabControl的每个 TabItem的做到这一点。然后你可以为标签设置一个事件。
该解决方案工作得很好;但是,“标签”具有边距属性,可以防止“MouseLeftButtonDown”处理程序被触发,除非用户单击标签时不起作用。此外,由于标签填充,看起来其他选项卡的样式会受到影响。
您可以通过覆盖标签的默认边距/填充属性来缓解这种情况......或者甚至更简单地使用TextBlock。
<TabItem x:Name="tabItem1" >
<TabItem.Header>
<TextBlock MouseLeftButtonDown="tabItem1_Click">
Click Me
</TextBlock>
</TabItem.Header>
...
</TabItem>
- 1. WPF-MVVM:在视图模型中的TabItem头单击事件处理
- 2. WPF:如何处理单独文件中的DataTemplate中的事件?
- 3. 如何处理WPF DataTemplate中的事件?
- 4. DataGrid里面的TabItem事件处理
- 5. 我如何处理WPF中的数据绑定菜单中的点击事件
- 6. 如何处理WPF中的鼠标滚轮点击事件?
- 7. 处理DataGridHyperlinkColumn单击事件
- 8. 在已禁用的WPF中处理单击事件或MouseDown StackPanel
- 9. WPF中的事件处理
- 10. 如何处理wpf中的网格项上的右键单击事件?
- 11. WPF TabItem元素MouseClick事件
- 12. 如何处理单击WPF网格
- 13. 与变量处理中单击事件
- 14. 在django-tables2中处理单击事件
- 15. 如何在WPF上下文中引用右键单击的对象菜单项单击事件处理程序?
- 16. 如何处理单击RichTextBox中的超链接的事件
- 17. 如何处理我的类中的单击事件
- 18. 处理菜单项单击事件 - Android
- 19. 如何处理jQuery网格中的行单击事件
- 20. 如何处理jquery中的单击事件
- 21. 如何处理angular.js中的右键单击事件?
- 22. 如何处理win32 API中的单击事件?
- 23. 如何处理ListCtrl标题中的右键单击事件?
- 24. 如何处理UISplitView嵌套控制器中的单击事件
- 25. 如何处理DataGridViewLinkColumn的点击事件
- 26. WPF:如何处理和再泡事件
- 27. jQuery的单击事件处理
- 28. 的JavaScript单击事件处理
- 29. Z订单和事件处理wpf
- 30. 如何处理自定义gwt小部件的单击事件
如果我们还要设置标签的* Content *属性,我们是否需要设置标签的*名称*? – 2015-01-01 21:18:38
不,不需要TabItem的名称。只要Label具有关联的单击事件处理程序,它就可以工作。 – 2015-01-01 23:20:29