我在UserControl
中添加了Content
作为TabItem
的WPF TabItem
。 Items
已添加到TabControl
的{{1}}集合中。 Header
的{{1}}包含一个TabItem
和一个Label
。单击按钮可从TabControl的Items集合中删除TabItem。所以UserControl的引用不再存在了。当TabItem被删除时,我有一些清理代码要为UserControl运行。
我在UserControl中寻找Button
方法,但没有这样的方法可用于覆盖。
此外,我尝试使用Dispose
事件,但这也不起作用。
答案 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);
}