.net 从TabControl中删除时,UserControl作为TabItem内容的清除代码

.net 从TabControl中删除时,UserControl作为TabItem内容的清除代码,.net,wpf,tabcontrol,dispose,dispatcher,.net,Wpf,Tabcontrol,Dispose,Dispatcher,我有一个WPFUserControl,它作为Content添加到TabItem中。TabItem被添加到TabControl的Items集合中。选项卡项的标题包含一个标签和一个按钮。单击按钮可从TabControl的Items集合中删除TabItem。所以UserControl的引用不再存在了。我有一些清理代码要在删除TabItem时为UserControl运行 我在UserControl中寻找Dispose方法,但是没有这样的方法可以重写 此外,我还尝试使用Dispatcher.Shutdow

我有一个WPF
UserControl
,它作为
Content
添加到
TabItem
中。
TabItem
被添加到
TabControl
Items
集合中。
选项卡项
标题
包含一个
标签
和一个
按钮
。单击按钮可从TabControl的Items集合中删除TabItem。所以UserControl的引用不再存在了。我有一些清理代码要在删除TabItem时为UserControl运行

我在UserControl中寻找
Dispose
方法,但是没有这样的方法可以重写


此外,我还尝试使用Dispatcher.ShutdowStarted事件,但这也不起作用。

您可以扩展
UserControl
并添加一个方法来清理控件。从以下位置从
TabControl
中删除
TabItem
时,可以调用此方法:

private void Button_Click(object sender, RoutedEventArgs e)
{
    ExtendedUserControl control = (ExtendedUserControl)tabItem.Content;
    control.CleanUp();
    tabControl.Items.Remove(tabItem);
}
或者,您可以将清理方法添加到数据绑定到
用户控件的数据类中:

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