WPF Frame control со свойством source всегда сверху? - PullRequest
2 голосов
/ 13 ноября 2009

С учетом следующего небольшого фрагмента:

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

как и ожидалось, вы не увидите синюю рамку (она находится за красной).

Однако, если вы включите атрибут источника в синюю рамку:

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

это всплывает вперед.

Есть идеи, почему я могу это предотвратить?

спасибо

Ответы [ 2 ]

3 голосов
/ 13 ноября 2009

Элемент Frame с внешним источником фактически использует классический компонент COM COM. Поскольку он не является непосредственно WPF, он не участвует в макете WPF и должен быть «сверху» уровня WPF, чтобы быть видимым, и не может поворачиваться или масштабироваться. Это та же проблема, что и при использовании HwndHost для размещения содержимого win32 в WPF. См. Эту страницу MSDN для получения дополнительной информации.

Реального обходного пути нет, но вы можете попробовать использовать WPF Chromium , который использует движок Chromium для прямой визуализации веб-страниц как реального элемента WPF.

0 голосов
/ 13 ноября 2009

Я думаю, что синий всплывает во втором примере из-за его обновления или завершения рендеринга пользовательского элемента при загрузке файла. Возможно, это работает:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...