Wpf WindowsFormHost不允许控件位于顶部?

Wpf WindowsFormHost不允许控件位于顶部?,wpf,Wpf,我正在使用一个动画来显示一个自定义的showdialog弹出窗口(带有一些文本块和按钮的边框控件)。在获取WinFormHost后,如果我正在运行动画,则边界控件和其他控件将位于WinFormHost后面。是否有解决方法?如果希望WPF和Windows窗体内容共享同一个窗口,则没有解决方法 WPF通过Direct3D进行渲染,而Windows窗体使用GDI+,GDI+最终基于旧的GDI32渲染机制。Windows本身不提供使用这两种不同技术渲染到窗口同一区域的方法-最终您将得到Direct3D拥

我正在使用一个动画来显示一个自定义的showdialog弹出窗口(带有一些文本块和按钮的边框控件)。在获取WinFormHost后,如果我正在运行动画,则边界控件和其他控件将位于WinFormHost后面。是否有解决方法?

如果希望WPF和Windows窗体内容共享同一个窗口,则没有解决方法

WPF通过Direct3D进行渲染,而Windows窗体使用GDI+,GDI+最终基于旧的GDI32渲染机制。Windows本身不提供使用这两种不同技术渲染到窗口同一区域的方法-最终您将得到Direct3D拥有和渲染的HWND(WPF使用的),以及Windows窗体拥有和渲染的不同HWND。这些HWND在它们之间的包含窗口中分割空间,不能重叠

如果希望WPF和Windows窗体内容重叠,唯一受支持的方法是将它们放在单独的顶级窗口中-Windows在桌面级别支持重叠的Win32和Direct3D内容。可以使用每像素透明度创建非矩形窗口(WPF或Windows窗体)。因此,您可以关闭WPF应用程序中的所有窗口边框,并使背景透明。如果启用了透明功能,则可以将该窗口放置在与Windows窗体窗口完全相同的屏幕位置,此时您可以将WPF内容放在Windows窗体内容之上


不用说,这是一件乏味的事情。但不幸的是,如果您确实需要WPF内容放在Windows窗体内容之上,则需要这样做—您需要将WPF内容放在单独的窗口中。

如果您希望WPF和Windows窗体内容共享同一窗口,则没有解决方法

WPF通过Direct3D进行渲染,而Windows窗体使用GDI+,GDI+最终基于旧的GDI32渲染机制。Windows本身不提供使用这两种不同技术渲染到窗口同一区域的方法-最终您将得到Direct3D拥有和渲染的HWND(WPF使用的),以及Windows窗体拥有和渲染的不同HWND。这些HWND在它们之间的包含窗口中分割空间,不能重叠

如果希望WPF和Windows窗体内容重叠,唯一受支持的方法是将它们放在单独的顶级窗口中-Windows在桌面级别支持重叠的Win32和Direct3D内容。可以使用每像素透明度创建非矩形窗口(WPF或Windows窗体)。因此,您可以关闭WPF应用程序中的所有窗口边框,并使背景透明。如果启用了透明功能,则可以将该窗口放置在与Windows窗体窗口完全相同的屏幕位置,此时您可以将WPF内容放在Windows窗体内容之上

不用说,这是一件乏味的事情。但不幸的是,如果您真的需要在Windows窗体内容之上添加WPF内容,则需要这样做—您需要将WPF内容放在单独的窗口中