WPF Adorner не отображается, когда AdornedElement не отображается - PullRequest
0 голосов
/ 06 июня 2018

Я получил Adorner с пользовательской функцией ArrangeOverride, которая заботится о размещении и размере содержимого ContentPresenter.

Если элемент отображается при первой визуализации страницы, все работает нормально.Но если украшенный элемент не виден в это время (например, в не показанной части ScrollPanel), злоумышленник никогда не рисуется, даже тогда панель прокручивается вниз, и элемент становится видимым.

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

Inв этом случае 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, когда элемент становится видимым?

...