2015-01-08 37 views
0

我有一个从UserControl继承的类。我在WPF TabControl中将此类显示为一个选项卡。该选项卡有一个小x,可以通过点击关闭。我需要一种方式来在选项卡销毁之前执行一些清理代码。WPF UserControl是tabcontrol中的一个选项卡 - 如何检测它是否关闭

我不相信我可以使用Unloaded事件来做到这一点,因为在UserControl被销毁时调用Unloaded事件,并且当您单击另一个选项卡时也调用它。

关于如何处理这种情况的任何想法?编辑: 这是更多信息。 在我的UserControl类中,我使用了第三方控件。基本上是一个图形控制。我想运行几行代码来确保没有内存泄漏。如果您想了解更多关于它那么这将是更多地谈论它的网址:

http://support.scichart.com/index.php?/News/NewsItem/View/21/wpf-xname-memory-leak--how-to-clear-memory-in-scichart

+1

你在清理什么,DataContext? DataContext是集合的一部分吗?你能订阅CollectionChanged事件吗? –

+0

是啊知道你在试图清理什么是有帮助的。 – bleepzter

+0

你能否提供一些解释你如何关闭标签的代码? –

回答

1

你可以看看我在dragablz TabControl的做到了这一点上GitHub的方式。

本质上,TabControl监听从关闭按钮引发的RoutedCommend,然后调用一个可选的回调,该回调使MVVM视图模型(或旧式控件类型代码)能够处理关联的视图模型,或执行其他任何整理你想要做的代码(或者确实取消关闭操作)。

在GitHub上的示例项目文件中,查找ClosingItemHandlerImpl并从那里开始工作。

http://github.com/ButchersBoy/Dragablz/blob/master/DragablzDemo/BoundExampleModel.cs

ClosingItemHandlerImpl势必从XAML,和标签控制将之前调用它来去除标签。

相关问题