2013-08-29 1 views
0

TabItemContent으로 추가 된 WPF UserControl이 있습니다. TabItemItems 컬렉션 TabControl에 추가됩니다. TabItemHeader에는 Label과 하나의 Button이 포함되어 있습니다. 단추를 클릭하면 TabControl의 Items 컬렉션에서 TabItem이 제거됩니다. 그래서 UserControl의 참조가 더 이상 존재하지 않습니다. TabItem 제거 될 때 UserControl에 대해 실행할 수있는 일부 정리 코드가 있습니다.TabControl에서 제거 할 때 TabContem의 내용으로 UserControl의 정리 코드

UserControl에서 Dispose 메서드를 찾고 있지만 재정의에 사용할 수있는 메서드가 없습니다.

또한 Dispatcher.ShutdownStarted 이벤트를 사용해 보았지만 작동하지 않습니다.

답변

1

UserControl을 확장하고 컨트롤을 정리하는 방법을 추가 할 수 있습니다.

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    UserControl control = (UserControl)tabItem.Content; 
    YourDataClass data = (YourDataClass)control.DataContext; 
    data.CleanUp(); 
    tabControl.Items.Remove(tabItem); 
} 
:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    ExtendedUserControl control = (ExtendedUserControl)tabItem.Content; 
    control.CleanUp(); 
    tabControl.Items.Remove(tabItem); 
} 

또는 당신이 데이터 UserControl에 바인딩 된 데이터 클래스에 정리 방법을 추가 할 수 있습니다 : 당신이에서 TabControl에서 TabItem를 제거 이제까지 당신은에서이 메서드를 호출 할 수 있습니다