目录
介绍
将Winform/Browser与WPF混合会导致重合区域出现渲染问题。我附上了一个快速的解决方案,以防有人被困住。我们将另一个WPF窗口附加到特定的XAML位置,它负责处理空域问题。该解决方案包含一个非常基本的示例,我希望它能为您提供一个开始的指针。
使用代码
演示应用程序有一个主窗口,其中包含三个引人注目的子窗口:
- WinformHost
- Browser
- OverlayContainer
<local:OverlayControl x:Name="OverlayContainer" Grid.Row="2"
Grid.RowSpan="2" Grid.ColumnSpan="2" Height="100" VerticalAlignment="Center">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<TextBlock Text="This is overlay content
" Grid.Column="0" HorizontalAlignment="Left" Background="Orange"/>
<TextBlock Text="This is another overlay content"
Grid.Column="1" HorizontalAlignment="Right" Background="Orange"/>
</Grid>
</local:OverlayControl>
OverlayContainer是一个包装器控件,您可以在其中提供要在WinformHost/Browser之上呈现的预期内容。此容器将另一个WPF窗口注入到提供其自己的内容的区域中。OverlayWindow是被注入的那个。扩展的HwndHost用于将WPF窗口粘合到OverlayContainer中。