Silverlight 3 PopUp控件中的MouseLeave事件

时间:2009-09-19 09:48:55

标签: silverlight-3.0 event-handling popup

我想使用PopUp(System.Windows.Controls.Primitives.PopUp)控件来显示一些上下文菜单。鼠标离开后,应自动关闭。但是从不执行MouseLeave的eventhandler。为什么呢?

示例:

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

此致

Anton Kalcik

2 个答案:

答案 0 :(得分:1)

Popup中有哪种类型的子控件?在使用WPF / Silverlight的其他情况下,我已经有了子控件吞下消息,这对于父进程来说是很好的。

作为一项实验,如果为子控件附加MouseLeave处理程序会发生什么?

答案 1 :(得分:1)

你必须在Popup.Child上绑定事件,而不是弹出本身,它可能是一个Silverlight的错误。