0

我有一个 WPF UserControl,它像ContentTabItem. 被TabItem添加到 的Items集合中TabControl。的Header包含TabItemLabel和一Button。单击按钮会从 TabControl 的 Items 集合中删除 TabItem。所以 UserControl 的引用不再存在。当 TabItem 被删除时,我有一些要为 UserControl 运行的清理代码。

我在 UserControl 中寻找Dispose方法,但没有可用于覆盖的方法。

另外,我尝试使用Dispatcher.ShutdownStarted事件,但这也不起作用。

4

1 回答 1

1

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

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

或者,您可以将清理方法添加到数据绑定到的数据类中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);
}
于 2013-08-29T12:05:09.690 回答