如何在WPF中处理TabItem单击事件?

在我的应用程序中,我使用了WPF TabControl我想处理TabItem click事件。 我如何实现它?

您可以通过在tabcontrol中为每个tabitem的header属性添加标签来完成此操作。 然后,您可以为标签设置事件。

XAML

               

C#/ Code Behind

 private void tabItem1_Clicked(object sender, MouseButtonEventArgs e) { //DO SOMETHING } private void tabItem2_Clicked(object sender, MouseButtonEventArgs e) { //DO SOMETHING } 

希望这可以帮助。

这是一个古老的问题,但我在相同的情况下找到答案。

我在TabControl(XAML)上使用SelectionChanged事件

  

代码背后(C#):

 private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) { //Stuff } 

这不是点击他自己,而是为了让人耳目一新。

您可以在TabControl中使用SelectionChanged事件并使用switch case执行您喜欢的任何操作。

// XAML代码

       

//代码背后

  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; } } 

将标题包装在无模板按钮中。

如果您使用ItemsSource:

        

如果您有静态内容,可以立即将其插入标题:

        

您可以通过在tabcontrol中为每个tabitem的header属性添加标签来完成此操作。 然后,您可以为标签设置事件。

解决方案效果很好; 但是,“label”具有margin属性,可以防止“MouseLeftButtonDown”处理程序被触发,除非用户单击标签为dead。 此外,由于标签填充,看起来其他选项卡的样式会受到影响。

您可以通过覆盖标签的默认边距/填充属性来缓解这种情况……或者更简单地说,使用TextBlock。

    Click Me   ...  

尝试使用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 } 

希望这会有所帮助