具有源属性的WPF帧控件始终位于顶部?

时间:2009-11-13 08:35:16

标签: wpf

给出以下小片段:

<Grid>
  <Frame Width="300" Height="300" Background="Blue"></Frame>
  <Frame Width="350" Height="350" Background="Red"></Frame>
</Grid>

正如预期的那样,您无法看到蓝色框架(它位于红色框架后面)。

但是,如果将source属性包含在蓝框中:

<Grid>
  <Frame Width="300" Height="300" Background="Blue" Source="c:\test.htm"></Frame>
  <Frame Width="350" Height="350" Background="Red"></Frame>
</Grid>
它突然出现在前面。

知道为什么我可以阻止它吗?

感谢

2 个答案:

答案 0 :(得分:3)

具有外部源的Frame元素实际上使用了经典的IE COM组件。由于它不是直接WPF,它不参与WPF布局,必须在WPF层的“顶部”才能看到,并且不能旋转或缩放。这与使用HwndHost在WPF中托管win32内容时遇到的问题相同。 See this MSDN page了解更多信息。

没有真正的解决方法,但您可以尝试使用WPF Chromium使用Chromium的引擎直接将网页呈现为真正的WPF元素。

答案 1 :(得分:0)

我认为在第二个示例中会弹出蓝色,因为它在加载文件时已更新或完成了uielement的渲染。 也许这有效:

<Grid>
  <Frame Width="300" Height="300" Background="Blue" Source="c:\test.htm" Panel.ZIndex="0"></Frame>
  <Frame Width="350" Height="350" Background="Red" Panel.ZIndex="1"></Frame>
</Grid>