Ich verwende den System.Windows.Controls.WebBrowser für verschiedene Dinge in meiner App und ich habe festgestellt, dass Adorner abgeschnitten sind, wenn sie über einen WebBrowser angezeigt werden sollen. Ich stelle fest, dass das WebBrowser-Steuerelement wirklich ein Wrapper um eine COM-Komponente ist und wahrscheinlich unterschiedlich rendert, aber ich fragte mich, ob jemand herausgefunden hat, wie das zu lösen ist.Anzeigen eines Adorner über ein WebBrowser Steuerelement
Das ist das Problem, das ich sehe. Hier habe ich nur einen Beispiel-Adorner, der einen großen roten Kreis in der oberen Ecke von etwas (als Beispiel) zeichnen soll.
Als ich das WebBrowser mit diesem schmücken, ich dieses Ergebnis:
Ich erwarte, dass der Kreis zu sehen.
Hier ist der Code für diesen wertlos adorner, falls die hilfreich ist:
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);
}
}
Und hier ist, wie ich es an den Browser in der OnRender Methode der Host-Steuerung anwenden:
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
var layer = AdornerLayer.GetAdornerLayer(browser);
layer.Add(new SillyAdorner(browser));
}
Hat jemand irgendwelche Hacks oder Workarounds dafür?
Edit: Ich benutze .NET 4.0, wenn das einen Unterschied macht.
Edit # 2: WebBrowser erscheint von HwndHost zu erben, was ich noch eine Frage oder zwei bezüglich Adornern und hwndsources gesehen habe, aber ich sehe nichts, das aussieht wie ich es für die WebControl implementieren könnte, aber hoffentlich ist das eine nützliche Information für jemanden.
Ja .... Ich hatte das anderswo gesehen. Es sieht so aus, als wäre ein Popup auch ein hwnd, also ist es praktisch. Das einzige, was hier ist, ist, dass ausgeschnitten Adorners um andere Objekte um ihn zu dekorieren. Ich werde meine Antwort aktualisieren, um dies zu reflektieren. Sehr guter Vorschlag, obwohl ... Ich könnte sehen, wie ich meinen Adorner in einem hwnd verpacke. –