2009-09-19 2 views
2

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

SAMPLE:

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; 
} 

С уважением

Антон Kalcik

ответ

1

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

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

+0

Это было мое решение. Я привязал обработчики MouseLeave к дочернему контейнеру. С уважением, AKa –

1

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