我在窗口中有一个标签控件。选项卡都有简单的上下文菜单(应该允许用户关闭它们)。但是,当我点击关闭时,没有任何反应。
这是事件处理程序
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(),
它仍然无效
答案 0 :(得分:3)
菜单项不是标签。您无法将其从TabControl
中删除。您需要引用MenuItem
所属的选项卡。这可以通过各种方式完成。
我看到你在那里尝试了一些名称和字符串操作的相当hacky的东西,这里将是一个更干净的方法,不需要任何这些:
var target = (FrameworkElement)sender;
while (target is ContextMenu == false)
target = (FrameworkElement)target.Parent;
var tabItem = (target as ContextMenu).PlacementTarget;
Tabs.Items.Remove(tabItem);
这会获取父级,直到找到ContextMenu
并从TabItem
获取PlacementTarget
。