2017-07-20 80 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

相关问题