2011-09-01 58 views
1

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

这里是事件处理程序

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

什么是“标签”?不能找到班级。 –

回答

4

菜单项不是标签。你不能从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

+0

我在想什么!?!?我怎么错过了。我认为它说TabItem。 DUURRR – Luke

+0

@Luke:如果你需要获得标签的帮助,请告诉我。 –

+0

好吧......现在我有一个真正的问题。 – Luke