如何检查WPF控件是否托管在WinForms中?

问题描述:

我有一个WPF控件,它在某些情况下作为WPF应用程序的组件存在,另一个控件在Windows窗体中。我如何检测第二种情况(WPF控件是嵌入在WinForms中)?如何检查WPF控件是否托管在WinForms中?

+0

我想尝试''Window.GetWindow(CTRL);''和希望它返回null,在托管环境中。 –

试试这个:

HwndSource wpfHandle = PresentationSource.FromVisual(this) as HwndSource; 
if (wpfHandle != null) 
{ 
    ElementHost host = System.Windows.Forms.Control.FromChildHandle(wpfHandle.Handle) as ElementHost; 
    if(host != null) 
    { 
     //hosted in ElementHost... 
    } 
}