2011-09-01 60 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