Как определить, когда моя StackPanel потеряла фокус изнутри пользовательского элемента управления, в котором она находится? - PullRequest
0 голосов
/ 22 сентября 2010

У меня есть Silverlight UserControl, и он содержит StackPanel, которая, в свою очередь, содержит в себе некоторые UserControls.Я хотел бы иметь возможность определить, когда пользователь нажимает / вкладывает за пределами внешней StackPanel (т.е. когда StackPanel теряет фокус), и я хотел бы иметь возможность обрабатывать его изнутри моего UserControl.Кто-нибудь есть какие-либо предложения о том, как я мог бы сделать это?

Когда один из компонентов потерял фокус, я попытался отправить поток, который посмотрел бы, если бы какой-либо элемент управления в основном UserControl получил фокус дальше, который затемскажи мне, если я все еще под моим контролем.Проблема в том, что я уже был в потоке пользовательского интерфейса, поэтому Dispatcher немедленно выполнил мое действие, пока я еще находился в процессе обработки LostFocus.Итак, это не сработало.

Что-то еще, что я пытался задействовать, используя FocusManager и определить, является ли элемент управления с фокусом дочерним по отношению к моей StackPanel.Это не сработало, потому что GetFocusedElement () вернул элемент, фокус которого я потерял.

У кого-нибудь есть другие идеи?Любая помощь приветствуется.

1 Ответ

0 голосов
/ 22 сентября 2010

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

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