Событие MouseLeave в элементе управления PopUp Silverlight 3

Я хочу использовать элемент управления PopUp (System.Windows.Controls.Primitives.PopUp) для отображения некоторого контекстного меню. После того, как мышь уйдет, должен автоматически закрываться. Но обработчик событий для MouseLeave никогда не выполняется. Почему?

ОБРАЗЕЦ:

void DocumentLibrary_Loaded(object sender, RoutedEventArgs e)
{
    DocumentLibraryDialog documentLibraryDialog = new DocumentLibraryDialog();

    _popUpDocumentLibraryDialog = new Popup();
    _popUpDocumentLibraryDialog.Width = 70;
    _popUpDocumentLibraryDialog.Height = 20;
    _popUpDocumentLibraryDialog.MouseLeave += new MouseEventHandler(_popUpDocumentLibraryDialog_MouseLeave);
    _popUpDocumentLibraryDialog.Child = documentLibraryDialog; 
}

void _popUpDocumentLibraryDialog_MouseLeave(object sender, MouseEventArgs e)
{
    Popup currentPopUp = (Popup)sender;
    if (currentPopUp.IsOpen)
        (currentPopUp.IsOpen) = false;
}

С Уважением

Антон Кальчик


person Anton Kalcik    schedule 19.09.2009    source источник


Ответы (2)


Какие дочерние элементы управления есть во всплывающем окне? В других случаях с WPF / Silverlight у меня были дочерние элементы управления, проглатывающие сообщения, которые было бы неплохо обработать родителю.

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

person kmontgom    schedule 16.11.2009
comment
Это было моим решением. Я прикрепил обработчики MouseLeave к дочернему контейнеру. С уважением, AKa - person Anton Kalcik; 16.11.2009

вам нужно привязать событие к Popup.Child, вместо самого всплывающего окна, это может быть ошибка silverlight.

person Kevin Yang    schedule 24.03.2010