关闭/删除选项卡项WPF

时间:2011-09-01 14:49:32

标签: c# wpf xaml tabs

我在窗口中有一个标签控件。选项卡都有简单的上下文菜单(应该允许用户关闭它们)。但是,当我点击关闭时,没有任何反应。

这是事件处理程序

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(), 

它仍然无效

1 个答案:

答案 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