WPF中的WPF元素通常可以层叠显示,常见在仅有一行一列的Grid中放置两个元素,后放置的元素会显示在前一个元素的顶面。然而,当第一个元素不是wpf元素而是System.Windows.Forms中的控件的时候(注:用WindowsFormsHost包装起来的System.Windows.Forms控件),那么第二个元素就显示不出来。
<Grid>
<!DockPanel 元素时Grid中的第一个元素,里面包装了一个WindowsFormsHost>
<DockPanel Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center">
<WindowsFormsHost Name="myHost" MinWidth="720" MinHeight="480"
SizeChanged="myHost_SizeChanged" HorizontalAlignment="Center"
VerticalAlignment="Center">
<forms:PictureBox/>
</WindowsFormsHost>
</DockPanel>
<!TextBlock元素时Grid中的第二个元素>
<TextBlock Grid.Column="0" Grid.Row="0" Text="上层的文字" FontSize="25" Foreground="Blue"
HorizontalAlignment="Center" VerticalAlignment="Center"
Visibility="{Binding DoesNotExistEquipment,ElementName=this,Mode=OneWay,
Converter={StaticResource BooleanToVisibilityConverter}}"/>
<!TextBlock元素本应该显示在第一个元素的顶面,但是即使Visibility=Visible时也是显示不出来的,不知道什么原因>
</Grid>
本文探讨了WPF应用中使用WindowsFormsHost包装WinForms控件时出现的层叠显示问题,即后续添加的WPF元素无法正常显示在前一个WinForms控件之上。

1万+

被折叠的 条评论
为什么被折叠?



