оверлей для управления WebBrowser в приложении WPF? - PullRequest
4 голосов
/ 06 октября 2009

Может ли кто-нибудь подсказать мне, как отобразить «элементы управления наложением» в элементе управления WebBrowser в моем приложении WPF? Я хотел бы отображать навигационную графику в качестве наложения, чтобы пользователь мог выбрать функцию, а элементы управления навигацией исчезают после ее выбора.

пока не очень опытен в WPF. :( Я понятия не имею, с чего начать. Любая подсказка или ссылка будут отличными. Спасибо

Ответы [ 4 ]

5 голосов
/ 06 октября 2009

Там будут проблемы с этим. Есть проблемы с «воздушным пространством» в браузере WPF. по сути, это означает, что вы не можете ничего положить поверх элемента управления браузера.

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

1 голос
/ 04 апреля 2013

Я нашел способ преодолеть это, хотя это немного взломать. По сути, вы создаете свои элементы управления как элементы управления WinForm и используете WindowsFormsHost для их размещения.

WindowsFormsHost будет располагаться поверх элемента управления веб-браузера.

Как я уже сказал, не идеально, но сработает, если вы в отчаянии.

0 голосов
/ 06 ноября 2013

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

Лучшее решение этой проблемы - обработка высоты элемента управления браузера. Найдите простой сценарий ниже.

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

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

В 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 голосов
/ 07 октября 2009

Существует браузер на основе wpf , который использует Chromium. Это должно позволить вам рассматривать его как любой другой объект wpf, а не как элемент управления браузера activex.

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