关闭/删除选项卡项
本文关键字:选项 删除 关闭 | 更新日期: 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
。