Есть ли способ визуализации элементов управления WPF поверх элемента управления wpf WebBrowser? - PullRequest
8 голосов
/ 13 октября 2010

Мне требуется встроенный элемент управления WebBrowser в моем приложении, и у меня возникают проблемы с отображением содержимого WPF поверх него. Иногда приложение отображает всплывающие окна для редактирования данных или отображения ошибок, а веб-браузер отображается поверх всплывающих окон, потому что это элемент управления WinForms.

Альтернатива, которую я рассмотрел здесь использует элемент управления Popup для размещения элементов поверх элемента управления WebBrowser, однако моя проблема с всплывающими окнами - они остаются открытыми при переключении на другое приложение и не перемещаются с вашим приложением, когда пользователь изменяет размеры / перемещает приложение.

Есть ли альтернативный способ сделать это? Встроенный веб-контент представляет собой страницы формата aspx и поэтому не является статическим HTML.

Ответы [ 6 ]

4 голосов
/ 14 октября 2010

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

Если вы отображаете статический контент (или контент из источника, которым вы можете управлять или влиять), вы можете вместо этого отобразить, например, документы RTF в DocumentViewer., в котором нет проблем с воздушным пространством элемента управления WebBrowser.

2 голосов
/ 14 октября 2010

Один из способов обойти проблемы воздушного пространства - создать новое безрамное окно и расположить его поверх элемента управления веб-браузера. Основная проблема заключается в том, что он правильно позиционируется при перемещении / изменении размера главного окна и т. Д.

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

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

ИСПРАВЛЕНИЕ: Стандартное исправление - вы можете установитьвысота веб-браузера до нуля, когда вы запускаете какой-то другой контроль над ним, зависит от вашего сценария.Ниже приведен пример реализации.

В MainWindow.Xaml включите события.

Activated="Window_Activated"
Deactivated="Window_Deactivated"

В Xaml.cs обработайте сценарий, задав высоту.

private void Window_Activated(object sender, EventArgs e)
{
    wb.Height = double.NaN;
}

private void Window_Deactivated(object sender, EventArgs e)
{
    wb.Height = 0;
}
0 голосов
/ 21 октября 2010

Еще одна методология, с которой у меня был некоторый успех, заключалась в том, чтобы поиграться с областями отсечения, чтобы по существу вырезать дыры в элементе управления ActiveX, который по существу размещен в этих элементах управления оберткой WebBrowser. Если у меня будет время, я напишу демонстрацию того, что нашел, и попытаюсь привести пример, но я просто хотел поделиться этим на тот случай, если у кого-то будет больше времени для изучения и он может превзойти меня.

0 голосов
/ 14 октября 2010

Проект WPF 4.0 Chromium WebBrowser является альтернативой встроенному элементу управления WebBrowser, который должен делать то, что вам нужно.

0 голосов
/ 13 октября 2010

Вы можете использовать Adorner's для достижения этой цели.http://msdn.microsoft.com/en-us/library/ms753340.aspx

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