2013-08-16 7 views
1

이 질문은 this question과 비슷합니다. 차이점은 이제 name 또는 header으로 참조되는 탭 항목을 삭제하고 싶습니다. 이 질문에 대한 대답과 비슷한 방식으로 Remove으로 전화 할 수 있습니까?이름이나 머리글을 기반으로 탭 항목을 삭제하는 방법

tabControl.Items.Remove = tabControl.Items //Changes tab according to TreeView 
         .OfType<TabItem>().SingleOrDefault(n => n.Name == stringValue); 

내가 this 같은 것을 사용할 수 :

이 내가 해봤 무엇인가? 그렇다면 어떻게?

+2

WPVM에 대한 기본 생각 방법으로 MVVM을 강력히 제안합니다. winforms와 같은 코드 숨김 유형의 해킹 및 절차 코드의 UI 요소 조작은 고통과 고통 및 고문과 비참한 실패 만 가져옵니다. 'ItemsControl'에서 파생 된 요소 (예 : TabControl, Menu 또는 ListBox 또는 ComboBox)를 처리 할 때 훨씬 더 그렇습니다. –

+0

시도해 보셨습니까? –

+0

'Remove'가 메소드 그룹이기 때문에 정확히 작동하지 않습니다. 나는 내가 시도한 것을 게시 할 것이다. –

답변

1

wpf에서 제거하는 것에 대해 많이 알지는 못하지만이 코드는 게시 한 것보다 작동 할 확률이 높습니다. 제거는 메서드이므로 값을 할당 할 수 없으므로 제거 할 항목을 분리하고 null이 아닌지 확인한 다음 Remove 메서드로 개체를 전달해야합니다.

var tabToDelete = tabControl.Items.OfType<TabItem>().SingleOrDefault(n => n.Name == stringValue); 
if (tabToDelete != null) // Since you chose to use SingleOrDefault, we have to check to make sure it isn't null before we try to remove it. 
tabControl.Items.Remove(tabToDelete); 

그러나, 나는 강력하게 항목을 제거 할 수 있다면,하고 제거 방법은 해당 컨트롤을 사용할 경우에도 확인에 대한 자세한로 전환 한 이후 WPF - Best way to remove an item from the ItemsSource를 살펴 보시기 바랍니다.

+0

좋아요, 제가 아는 한, 많이 고마워요! –

+0

'Name '을'Header'로 변경하고이 코드를 사용하여'tabItem'을'Header'로 참조 할 수 있습니까? –

+0

이것은 완벽하게 작동했습니다. 감사합니다! –