在我的 silverlight 项目中,我有一个菜单,如果我点击它外面的任何地方,我想关闭它。我将处理程序添加到 App 上的单击事件:
AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu
但是问题是:当我点击任何其他命令时它不进入处理程序,或者点击具有上下文菜单的同一个控件,只有当我点击菜单外的空白区域时才进入。
谢谢。
在我的 silverlight 项目中,我有一个菜单,如果我点击它外面的任何地方,我想关闭它。我将处理程序添加到 App 上的单击事件:
AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu
但是问题是:当我点击任何其他命令时它不进入处理程序,或者点击具有上下文菜单的同一个控件,只有当我点击菜单外的空白区域时才进入。
谢谢。
我不知道这是一个AddHandler
只需要 2 个参数的签名,也许它是一个 VB 的东西,你正在逃避它,并将第三个参数默认为False
. 此参数是handledEventsToo参数,它指示您希望处理程序即使在其他一些控件已处理事件时也能执行。
我猜VB看起来像这样:-
AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu, True
编辑
让我们抛弃这个无论如何都是错误的 VB 代码。下面是 C# 中的代码应该是什么样子(您必须非常熟悉翻译,因为 Web 上用于 silverlight 的绝大多数代码示例都使用 C#)。
this.AddHandler(UIElement.MouseLeftButtonDownEvent, HideMenu, true);
此代码位于包含 UserControl 的代码中并HideMenu
具有此签名:-
void HideMenu(object sender, MouseEventArgs e)
{
}