.net 在WPF中托管ActiveX控件:WindowsFormsHost还是ActiveXHost?
我知道MSDN用于在WPF应用程序中托管ActiveX控件。但也有,作为WebBrowser控制的基础。它被描述为一个基础设施类,但它是公共的,我可以从中派生出来。它似乎提供了托管自定义ActiveX控件所需的一切。为什么有另一层?这是个坏主意吗?您不应该使用它的最大原因是,作为一个基础结构类,它们无法确保api在不同版本之间保持稳定。他们可以从根本上改变它的使用方式,即使是在对框架进行小规模更新的情况下。现在,他们可能不会,但是因为你不能保证它是稳定的,如果.NET的新版本破坏了api,你的应用程序可能会突然在用户的机器上随机中断.net 在WPF中托管ActiveX控件:WindowsFormsHost还是ActiveXHost?,.net,wpf,winforms,wpf-controls,activex,.net,Wpf,Winforms,Wpf Controls,Activex,我知道MSDN用于在WPF应用程序中托管ActiveX控件。但也有,作为WebBrowser控制的基础。它被描述为一个基础设施类,但它是公共的,我可以从中派生出来。它似乎提供了托管自定义ActiveX控件所需的一切。为什么有另一层?这是个坏主意吗?您不应该使用它的最大原因是,作为一个基础结构类,它们无法确保api在不同版本之间保持稳定。他们可以从根本上改变它的使用方式,即使是在对框架进行小规模更新的情况下。现在,他们可能不会,但是因为你不能保证它是稳定的,如果.NET的新版本破坏了api,你的应
我不相信这种情况会发生,但这是危险的。如果您正在构建一个WPF应用程序,我认为是这样,那么您应该使用
WindowsFormsHost
控件来承载ActiveX内容。WebBrowser
继承自ActiveXHost
,允许您在XAML应用程序中承载ActiveX内容,这些应用程序在web浏览器中运行,会引发某些信任和安全问题
如果查看继承树,您会发现这两个主机都派生自HwndHost
,但WindowsFormsHost
是供开发人员使用的
不管怎样,正如@Abe所说,没有什么真正危险的事情会发生,但如果微软公司的人说不这样做,那就不要这样做 谢谢你的想法。只是不清楚他们为什么把它公之于众。它的唯一后代是来自同一组件的WebBrowser。他们密封了WebBrowser类,他们可以将ActiveXHost标记为内部,但他们没有。是的,我知道,这看起来确实有点奇怪。也许负责该类的开发人员不想为它编写文档,所以决定它“仅供内部使用”哈哈。你是说
WebBrowser
而不是BrowserControl
?我就是找不到浏览器控件
。非常感谢。