2017-07-20 68 views
0

我已將WebBrowser控制到我的UserControl中。此UserControl顯示取決於DataTemplateSelector規則。所以它被依次顯示和隱藏。 (想象一下,我有客戶訂單的列表並點擊列表項,我將UserControl加載到ContentPresenter中。) 根據WebBrowser memleaks的許多問題,建議對其進行處置。 所以我以這種方式致電。在可重新加載的父控件中引入wpf控件的正確方法

private void UserControl_Unloaded(object sender, RoutedEventArgs e) 
{ 
    WebBrowser.Dispose(); 
} 

但我注意到,如果通常堆棧跟蹤的構造函數,裝卸但有時WPF引擎無法重新創建用戶控件調用構造函數,但是從緩存中得到它(如果我正確地已瞭解),所以我得到處置瀏覽器UserControl作爲Unloaded方法處理它。

我該如何處置一次性控制器,即嵌入可重編譯UserControl

+0

正如我所瞭解你的問題是不配置WebBrowser控制,但如果usercontrol將被重用WebBrowser控制處置,我是對嗎? – Rekshino

+0

不完全。我需要保存WebBrowser處置,但是如果usercontrol將被重用WebBrowser控制處置。而且我想確保如果UserControl永遠不會被重用,那麼我會放棄WebBrowser。可以卸載不是最好的地方 –

回答

0

你可以在Loaded事件的用戶控件的創建一個新的WebBrowser控制實例,並配置它在Unloaded事件處理程序,即而不是在XAML標記定義控制你在同一的代碼隱藏創建它查看,

+0

或者它可以將創建/配置添加到VisibilityChanged中。 – Rekshino

+0

謝謝,我想過這種方式 –

+0

而且......?你爲什麼不實施它? – mm8

相關問題