2015-01-08 78 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,和標籤控制將之前調用它來去除標籤。

相關問題