Захват события Silverlight 4 при нажатии на панель - PullRequest
1 голос
/ 29 апреля 2010

У меня есть небольшое приложение Silverlight 4, которое по существу состоит из сетки с меткой и комбинированного окна. Когда я щелкаю метку, я заменяю ее вторым текстовым полем, чтобы я мог редактировать метку (так же, как вы можете редактировать имя элемента управления Silverlight в VS2010).

У меня есть обработчик событий LostFocus в текстовом поле, который заканчивает редактирование, когда элемент управления теряет фокус (восстанавливая обновленную метку). Проблема в том, что пользователи, как правило, нажимают на панель после завершения редактирования, а не на другой элемент управления (или нажимают клавишу Enter, что также поддерживается).

Я попытался добавить обработчик событий левой кнопки мыши на панель. Однако, это срабатывает только тогда, когда текстовое поле не имеет фокуса (я думаю, текстовое поле захватило мышь?)

Есть ли способ признать, что был выбран элемент управления без ввода, который позволил бы мне выйти из режима редактирования?

1 Ответ

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

Вы можете подписаться на перенаправленное событие Grid MouseLeftButtonDown, используя следующий код:

panel.AddHandler(UIElement.MouseLeftButtonDownEvent,
    new MouseButtonEventHandler(panel_OnMouseLeftButtonDown), true);

В отличие от обычных событий перенаправленные события передаются от внутреннего элемента управления его родителю, потом к прародителю и т. Д. Таким же образом вы можете подписаться на родителя панели, чтобы перехватывать щелчки за пределами вашей панели.

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