У меня есть структура меню и подменю в Silverlight, и я хочу, чтобы подменю исчезло, когда родительский элемент меню потерял фокус - стандартное поведение меню. Я заметил, что события щелчка в подменю теряются при нажатии на элемент подменю, потому что родительский элемент меню теряет фокус, а подменю исчезает.
Проще объяснить с помощью кода:
ParentMenuBtn.Click += delegate
{
SubMenu.Visibility = (SubMenu.Visibility == Visibility.Visible) ? SubMenu.Collapsed : SubMenu.Visible;
};
ParentMenuBtn.LostFocus += delegate
{
SubMenu.Visibility = Visibility.Collapsed;
};
SubMenuBtn.Click += delegate
{
throw new Exception("This will never be thrown.");
};
В моем примере, когда щелкается SubMenuBtn, первое событие, которое вызывает это ParentMenuBtn.LostFocus (), которое скрывает контейнер SubMenuBtn. Когда видимость контейнера падает, событие Click никогда не запускается.
Я бы предпочел не каждый раз скрывать подменю, но я немного удивлен, что в результате событие Click никогда не вызывается ...
Я не могу поставить какие-либо проверки внутри события LostFocus (), чтобы увидеть, имеет ли мой SubMenuBtn фокус, потому что он не получает фокус до тех пор, пока не будет вызвано событие LostFocus (). Другими словами, SubMenuBtn.IsFocused = false при срабатывании LostFocus ().
У кого-нибудь есть мысли по этому поводу?