Tôi đang sử dụng System.Windows.Controls.WebBrowser cho nhiều thứ khác nhau trong ứng dụng của mình và tôi đã nhận thấy rằng adorner bị cắt khi chúng được cho là xuất hiện trên WebBrowser. Tôi nhận ra rằng điều khiển WebBrowser thực sự là một wrapper xung quanh một thành phần COM và có thể ám khác nhau, nhưng tôi tự hỏi nếu có ai tìm ra cách để giải quyết điều này.Hiển thị một Adorner trên một điều khiển WebBrowser
Đây là vấn đề tôi thấy. Ở đây tôi chỉ có một adorner mẫu được cho là vẽ một vòng tròn màu đỏ lớn ở góc trên cùng của một thứ gì đó (như một mẫu).
Khi tôi tô điểm cho các WebBrowser với điều này, tôi nhận được kết quả này:
tôi mong đợi để xem vòng tròn đầy đủ.
Dưới đây là các mã cho adorner vô giá trị này, trong trường hợp đó là hữu ích:
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);
}
}
Và đây là cách tôi áp dụng nó vào các trình duyệt trong phương pháp OnRender của điều khiển host:
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
var layer = AdornerLayer.GetAdornerLayer(browser);
layer.Add(new SillyAdorner(browser));
}
Bất cứ ai có bất kỳ hacks hoặc cách giải quyết cho điều này?
Chỉnh sửa: Tôi đang sử dụng .NET 4.0, nếu điều đó tạo nên sự khác biệt.
Chỉnh sửa # 2: WebBrowser dường như thừa hưởng từ HwndHost, mà tôi đã nhìn thấy một câu hỏi hoặc hai liên quan đến adorners và hwndsources, nhưng tôi không nhìn thấy bất cứ điều gì giống như tôi có thể thực hiện nó cho WebControl, nhưng hy vọng đây là thông tin hữu ích cho ai đó.
Vâng .... Tôi đã thấy ở nơi khác. Có vẻ như điều này là bởi vì một popup cũng là một hwnd, vì vậy đó là tiện dụng. Điều duy nhất ở đây là cắt bỏ trang trí để trang trí các vật thể khác xung quanh nó. Tôi sẽ cập nhật câu trả lời của tôi để phản ánh điều này. Đề nghị rất tốt mặc dù ... Tôi có thể thấy về gói adorner của tôi trong một hwnd. –