关闭/删除选项卡项

本文关键字:选项 删除 关闭 | 更新日期: 2023-09-27 18:07:19

我在窗口中有一个选项卡控件。选项卡都有简单的上下文菜单,允许用户关闭它们。然而,当我点击关闭时,什么也没发生。

事件处理程序

void closeTab_Click(object sender, RoutedEventArgs e)
{
    Tabs.Items.Remove((MenuItem)sender);
}

我查阅了有关关闭标签页的文章,但是没有一篇文章详细介绍如何关闭标签页。

新问题:

void closeTab_Click(object sender, RoutedEventArgs e) 
{ 
    MenuItem close = (MenuItem)sender; 
    Tabs.Items.Remove(Convert.ToInt32(close.Name.Remove(0,3))); 
} 

上下文菜单项的命名如下:

Name = "Tab" + Tabs.Items.Count.ToString(), 

它仍然不做任何事

关闭/删除选项卡项

菜单项不是选项卡。不能将其从TabControl中移除。您需要引用MenuItem所属的选项卡。这可以通过多种方式实现。


我看到你在名字和字符串操作上尝试了一些相当粗糙的东西,这里有一个更干净的方法,不需要任何这些:

var target = (FrameworkElement)sender;
while (target is ContextMenu == false)
    target = (FrameworkElement)target.Parent;
var tabItem = (target as ContextMenu).PlacementTarget;
Tabs.Items.Remove(tabItem);

获取父节点,直到找到ContextMenu并从PlacementTarget获取TabItem