2010-06-22 14 views
0

Comment déterminer ce qui a causé l'événement GotFocus de WPF TextBox - clic de souris ou touche TAB? Je dois changer la couleur de la bordure si la mise au point a été réglée avec la touche TAB et laisser la couleur standart de la bordure si la mise au point a été réglée avec un clic de souris. J'ai donc besoin d'extraire des arguments de l'événement ce qui a causé un événement, ou (mieux) d'écrire le déclencheur pour le mettre dans le style TextBox.Comment déterminer ce qui a causé l'événement GotFocus de WPF TextBox - clic de souris ou touche TAB?

Répondre

1

Je suggère d'utiliser les événements OnKeyUp et OnMouseUp plutôt que l'événement GotFocus pour le déterminer. Dans OnKeyUp, vous devrez tester (voir Eventargs) que c'est la touche Tab qui a été enfoncée.

0

Pourriez-vous étendre la zone de texte WPF, puis l'utiliser pour toutes vos zones de texte à la place? Ensuite, vous pourriez avoir des événements surchargés pour déterminer comment vous étiez concentré, ou pour faire les changements de frontière.

class MySpecialTextBox : TextBox 
{ 
    protected override void OnIsKeyboardFocusWithinChanged(System.Windows.DependencyPropertyChangedEventArgs e) 
    { 
     // Focused by keyboard 
    } 

    protected override void OnMouseUp(System.Windows.Input.MouseButtonEventArgs e) 
    { 
     // Focused by mouse 
    } 

    protected override void OnIsMouseCaptureWithinChanged(System.Windows.DependencyPropertyChangedEventArgs e) 
    { 
     // Focused by mouse 
    } 
} 
+0

Oui, je peux, mais pour moi, il est préférable d'utiliser des déclencheurs de style, parce que je veux faire partie d'un style. C'est possible? La chose est, je veux créer une copie du style ExpressionLight qui serait plus comme le style réel de la lumière d'expression que celui qui est dans WPFToolkit. –