Silverlight 4 и событие MouseLeave внутри отключенного UserControl - PullRequest
1 голос
/ 23 июня 2011

У меня небольшая проблема с моим приложением SL с поддержкой RIA.

ФОН :

Соответствующая часть выглядит так:

  • Когда любая операция с данными (то есть загрузка, отправить, войти и т. д.), затем элемент управления BusyOverlay (который я написал) отключает RootVisual и предоставляет Визуальный эффект. Когда операция завершена, затем она устанавливает RootVisual.IsEnabled к чему бы то ни было был раньше. Это работает так же, как ChildWindow, когда дело доходит до взаимодействие с RootVisual (хотя бы насколько я могу судить).

  • Одним из элементов в RootVisual (который сам по себе является UserControl) является скрытое меню. Это граница, которая содержит актуальное меню. У него есть две раскадровки в ресурсах (которые увеличивают и уменьшают его ширину - ничего особенного, они настолько просты, как вы можете себе представить), а сама граница обработана MouseEnter и MouseLeave. Обработчики запускают одну из раскадровок, всего одну строку кода. Я не предоставляю никаких образцов, потому что ничего интересного не происходит, это просто раздувает пост. Если вы считаете это необходимым, просто скажите мне, и я опубликую соответствующий код XAML и C #.

ПРОБЛЕМА :

Когда RootVisual отключен, событие Border.MouseLeave не запускается. Когда пользователь щелкает что-то в меню, загружает исходные данные, а затем перемещает мышь за пределы меню, оно не скрывается. Есть ли способ элегантно решить эту проблему? CaptureMouse не подлежит сомнению (для этого требуется, чтобы левая кнопка мыши была нажата). Все, что я могу придумать, - это опубликовать событие «OperationFinished» в моей операции с данными, обрабатывающей статический класс, и обработать его в UserControl, который является RootVisual, но я думаю, что это уродливо и не вписывается в мою архитектуру. Я что-то упускаю?

Буду благодарен за любые решения и предложения.

...