Silverlight: Как мне определить, как мой контроль получил фокус? - PullRequest
2 голосов
/ 17 марта 2011

В частности, я хочу знать, получил ли элемент управления фокус, потому что пользователь нажал на него или потому, что пользователь нажал на него.

Ответы [ 2 ]

4 голосов
/ 18 марта 2011

Я думал об этом.Хотя у меня нет смелого ответа для вас, я думал о нескольких способах сделать это.Проблема, как вы знаете, заключается в том, что события нажатия клавиш KeyDown и MouseLeftButton происходят после GotFocus.Я также не смог найти способ проверить состояние мыши и клавиатуры во время события GotFocus.

Вы можете добавить новое событие TabFocus и ClickFocus и запустить их при событии click или tab.

В вашем событии gotFocus установите флажок для userControl.

justGotFocus = true;

добавьте события в публичное событие TabFocus, ClickFocus (метакод)

и затемв событиях Mouse и Key вы

TabFocus (это, новые EventArgs ())

ClickFocus (это, новые EventArgs ())

или просто вызываете центральную функциюс параметром FocusType

открытое событие SpecificFocusEvent SpecificFocus (this, FocusType.TabKey)

Извините ... устал ... ужасный код = P

Вы можете поставить вышеуказанноев присоединенное свойство для повторного использования.

ИЛИ где-то есть флаг, который я еще не нашел = P

pj

EDIT

Вы на правильном пути, просто немного не в порядке.Установите флаг для событий MouseDown, прочитайте его с помощью GotFocus и очистите его в MouseUp / GotFocus / LostFocus.Это чертовски ужасно, но обычно это работает.

0 голосов
/ 18 марта 2011

Под Control вы подразумеваете UserControl?

Если, тем не менее, событие GotFocus в UserControl возникает, когда элемент управления (ввода), например TextBox в UserControl, получает фокус.

UserControl сам по себе не может иметь фокус (нажав на фон UserControl).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...