2011-09-01 4 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))); 
} 

컨텍스트 메뉴 항목이 thusly 히 이름 : 그것은 아직 아무것도에게

+0

"탭"이란 무엇입니까? Cant가 수업을 찾는다. –

답변

4

메뉴 항목을하지 않습니다

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을 얻습니다.

+0

나는 무엇을 생각하고 있었느냐!?!? 나는 그것을 어떻게 놓쳤는가? 나는 그것이 TabItem이라고 생각했다. DUURRR – Luke

+0

@ 루케 : 탭을 얻는 데 도움이 필요하면 알려주십시오. –

+0

오케이. 이제 나는 진짜 문제가있다. – Luke