我正在使用winform主机在另一个WPF应用程序中显示一个WPF exe窗口。
我在主应用程序中创建了一个面板,并将其设置为winformhost的子节点。
mHostingPanel = new System.Windows.Forms.Panel()
{
BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
};
mWinformHost = new WindowsFormsHost();
mWinformHost.Child = mHostingPanel;
然后我启动另一个窗口进程并将托管面板设置为父级。
WindowsAPI.SetParent(mProcess.MainWindowHandle, mHostingPanel.Handle);
我的问题是,如果我启动应用程序,谁将呈现我的Child WPF窗口,其父级是winform面板。它是Panel的Direct-X还是GDI上下文?
此外,如果我在子WPF应用程序上设置Allowtransparency = True,则UI不会显示在主机面板中。
答案 0 :(得分:0)
找到原因。它被称为空域问题(当win32和WPF试图共享像素时)我不认为它可以通过任何框架API解决,因为微软否认它。 https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2644120-bring-back-the-hwndhost-isredirected-and-compositi