当AdornedElement不可见时,不会绘制WPF Adorner

时间:2018-06-06 15:54:10

标签: c# wpf adorner

我使用自定义的ArrangeOverride函数派生了一个装饰器,该函数负责处理包含ContentPresenter的位置和大小。

如果在第一次渲染页面时元素是可见的,那么每件事都可以正常工作。但是如果装饰元素在那时不可见(例如在ScrollPanel的未显示部分中),则即使然后面板向下滚动并且元素可见,也不会绘制adroner。

protected override Size ArrangeOverride(Size finalSize)
{
    Rect adorneredElementRect = GetBounds(AdornedElement);  
    ...
}

在这种情况下,adorneredElementRect为空,我的计算将失败。

饰品通过行为附加到文本框。

public class MyBehavior : Behavior<TextBox> {
   ...

   protected override void OnAttached()
   {
        myAdorner = new MyAdorner(AssociatedObject);
        var layer = AdornerLayer.GetAdornerLayer(VisualHelper.GetTopAdornerLayer(AssociatedObject));
        layer.Add(myAdorner);

        base.OnAttached(); 
  }

当元素可见时,如何强制调用ArrangeOverride?

0 个答案:

没有答案