Pourquoi mon ornement de ne pas rendre à nouveau lorsque l'élément il est appliqué à des changements?

Dans une UI je suis en train de construire, je veux orner un panneau à chaque fois que l'un des contrôles dans le panneau a le focus. J'ai donc gérer la IsKeyboardFocusWithinChanged événement, et ajouter un décorateur de l'élément lorsqu'il obtient le focus et retirer le décorateur quand il perd le focus. Cela semble fonctionner OK.

Le problème, je vais avoir, c'est que l'ornement n'est pas d'obtenir un nouveau rendu si les limites du orné élément change. Par exemple, dans ce cas simple:

<WrapPanel Orientation="Horizontal"
           IsKeyboardFocusChanged="Panel_IsKeyboardFocusChanged">
   <Label>Caption</Label>
   <TextBox>Data</TextBox>
</WrapPanel>

le décorateur correctement décore les limites de la WrapPanel lorsque le TextBox reçoit le focus, mais comme je tape dans le texte, les TextBox étend au dessous du bord de l'ornement. Bien sûr, dès que je fais quelque chose que les forces de l'ornement à rendre, comme ALT-TAB de l'application ou de donner un autre panneau de l'accent, il corrige de lui-même. Mais comment puis-je l'obtenir à nouveau le rendu lorsque les limites de la parée élément de changement?

OriginalL'auteur Robert Rossney | 2010-03-15