В пользовательском интерфейсе, который я создаю, я хочу украсить панель, когда один из элементов управления на панели имеет фокус. Поэтому я обрабатываю событие IsKeyboardFocusWithinChanged
и добавляю adorner к элементу, когда он получает фокус и удаляет рекламодателя, когда он теряет фокус. Кажется, что это работает нормально.
Проблема, с которой я сталкиваюсь, заключается в том, что adorner не получает повторного отображения, если границы украшенного элемента изменяются. Например, в этом простом случае:
<WrapPanel Orientation="Horizontal"
IsKeyboardFocusChanged="Panel_IsKeyboardFocusChanged">
<Label>Caption</Label>
<TextBox>Data</TextBox>
</WrapPanel>
adorner правильно украшает границы WrapPanel
, когда TextBox
получает фокус, но по мере ввода текста текст TextBox
расширяется под краем adorner. Конечно, как только я делаю все, что заставляет adorner визуализировать, например ALT-TAB, из приложения или отдавать другой фокус, он исправляет себя. Но как я могу получить его для повторной рендеринга при изменении границ стилизованного элемента?