Как определить, что вызвало событие GotFocus WPF TextBox - щелчок мышью или клавиша TAB? - PullRequest
2 голосов
/ 22 июня 2010

Как определить, что вызвало событие GotFocus WPF TextBox - щелчок мышью или клавиша TAB?Мне нужно изменить цвет границы, если фокус был установлен с помощью клавиши TAB, и оставить стандартный цвет границы, если фокус был установлен с помощью мыши.Поэтому мне нужно извлечь из аргументов события то, что вызвало событие, или (лучше) триггер записи, чтобы перевести его в стиль TextBox.

Ответы [ 2 ]

2 голосов
/ 22 июня 2010

Я бы предложил использовать для этого события OnKeyUp и OnMouseUp, а не событие GotFocus.В OnKeyUp вам нужно будет проверить (см. Eventargs), что была нажата клавиша Tab.

0 голосов
/ 22 июня 2010

Не могли бы вы расширить WPF TextBox, а затем использовать его для всех ваших текстовых полей?Тогда у вас могут быть некоторые переопределенные события, чтобы определить, как вы были сфокусированы, или сделать изменения границ.

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
    }
}
...