在顶级Winform Control上看不到WPF控件

时间:2012-03-06 12:57:38

标签: wpf winforms

我想在Winform Control上显示WPF控件。 我希望WPF按钮显示在Winform TextBox的顶部。

结果是WPF控件隐藏在winform TextBox的后面,我看不到它。 这是为什么?

这是我的代码:

<UserControl x:Class="Philips.PmsCT.Host.Applications.ExamApplication.ScanRulerComponent.WPFHostWF"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" Width="800" Height="120">
<Grid>
    <WindowsFormsHost >
        <wf:TextBox  BackColor="LightBlue" />
    </WindowsFormsHost>
    <Button Width="100" Height="25" Background="Red"/>
</Grid>

3 个答案:

答案 0 :(得分:3)

您似乎遇到Airspace问题。 因此,您可以重新排列两个控件,它们彼此相邻放置,不是彼此叠加或使用Wpf TextBox,或者您必须真正向后弯曲以共同缓解空域问题。

答案 1 :(得分:0)

所有WPF控件都在一个本机窗口中呈现。例如,您可以通过SPY ++进行检查。 几乎每个WindowsForm控件都在自己的窗口中呈现。同样,您可以通过SPY ++进行检查。 当一个窗口A(WPF)被另一个窗口B(Winform控件)覆盖时,您希望产生行为。同时你想要窗口B被A(wpf按钮)覆盖。我不知道是否可以没有任何钩子。 可能的解决方案是 1.在WinForm面板中托管WPF,TextBox是。 2.使用仅需要的按钮创建WPF表单并将其显示在第一个表单上。

答案 2 :(得分:0)

根据Microsoft docs:“可见的WindowsFormsHost元素总是绘制在其他WPF元素之上,并且不受z顺序的影响。”