Можно ли перекрывать WPF WebBrowser с другим UIElement? - PullRequest
2 голосов
/ 09 февраля 2012

Я хочу поместить поверх WPF WebBrowser UIElement (opacity = 0), т.е. и перехватывать все события кликов через этот перекрывающийся UIElement.

Можно ли это сделать?

Этот код не работает ...

<Canvas Name="cnsMain">
  <WebBrowser x:Name="MainBrowser" Visibility="Visible" Panel.ZIndex="0" />
  <Canvas Panel.ZIndex="100" Opacity="0.01"></Canvas>
</Canvas>

Спасибо!

Ответы [ 3 ]

5 голосов
/ 09 февраля 2012

Нет, вы не можете сделать это с WPF WebBrowser, который изначально поставляется с SDK.Это всегда поверх других UIElement.

Но я думаю, что это возможно с контролем со стороны.

Для подробностей взгляните на этот вопрос Я задавал ранее.

3 голосов
/ 09 февраля 2012

Нет, веб-браузер WPF - это просто стандартный элемент управления браузером в оболочке WPF. Он не является родным WPF и поэтому не учитывает ZOrder приложений WPF.

1 голос
/ 12 ноября 2013

Это можно сделать в .NET 4.5. Требуется установить следующие свойства на вашем WebBrowser элементе управления до того, как будет отображено:

IsRedirected = true
CompositionMode = System.Windows.Interop.CompositionMode.Full

Это включит перенаправление hwnd, позволяя перенаправить обычный hwnd верхнего уровня, используемый для рендеринга, на поверхность WPF, которая может хорошо сочетаться с другими элементами вашего дерева.

РЕДАКТИРОВАТЬ: Казалось бы, эта функция была вытащена из .NET 4.5 до выпуска. Мои извинения, если я дал кому-то ложную надежду. Спасибо @JoeDaley за указание на мою ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...