UserControl的清理代码作为从TabControl中删除的TabItem的内容

时间:2013-08-29 11:46:38

标签: .net wpf tabcontrol dispose dispatcher

我在UserControl中添加了Content作为TabItem的WPF TabItemItems已添加到TabControl的{​​{1}}集合中。 Header的{​​{1}}包含一个TabItem和一个Label。单击按钮可从TabControl的Items集合中删除TabItem。所以UserControl的引用不再存在了。当TabItem被删除时,我有一些清理代码要为UserControl运行。

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

此外,我尝试使用Dispose事件,但这也不起作用。

1 个答案:

答案 0 :(得分: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);
}