Я использую System.Windows.Controls.WebBrowser для различных вещей в своем приложении, и я заметил, что рекламные ролики отключены, когда они должны появиться через WebBrowser. Я понимаю, что элемент управления WebBrowser на самом деле является оберткой COM-компонента и, вероятно, работает по-разному, но я задавался вопросом, выяснил ли кто-нибудь, как это решить.Показать Adorner над элементом управления WebBrowser
Это проблема, которую я вижу. Здесь у меня есть только образец adorner, который должен нарисовать большой красный круг в верхнем углу чего-то (в качестве образца).
Когда я украшаю WebBrowser с этим, я получаю этот результат:
Я ожидаю увидеть полный круг.
Вот код для этого бесполезного Adorner, в случае, если это полезно:
public class SillyAdorner : Adorner
{
public SillyAdorner(UIElement element) : base(element)
{
}
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.DrawEllipse(new SolidColorBrush(Colors.Red), new Pen(), new Point(7, 7), 30, 30);
base.OnRender(drawingContext);
}
}
А вот как я применяю его в браузере в методе OnRender контроля хоста:
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
var layer = AdornerLayer.GetAdornerLayer(browser);
layer.Add(new SillyAdorner(browser));
}
У кого-нибудь есть хаки или обходные пути?
Редактировать: Я использую .NET 4.0, если это имеет значение.
Edit # 2: WebBrowser появляется унаследовать от HwndHost, который я видел еще один вопрос или два в отношении графических элементов и hwndsources, но я все, что выглядит, как я мог бы реализовать для WebControl не видя, но надеюсь, это полезная информация для кого-то.
Да ... Я видел это в другом месте. Похоже, это потому, что всплывающее окно также является hwnd, так что это удобно. Единственное, что здесь происходит, это обрезание украшений, предназначенных для украшения других объектов вокруг него. Я обновлю свой ответ, чтобы отразить это. Очень хорошее предложение, хотя ... Я мог бы увидеть, как обернуть моего торговца в hwnd. –