2

在我的 silverlight 项目中,我有一个菜单,如果我点击它外面的任何地方,我想关闭它。我将处理程序添加到 App 上的单击事件:

AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu

但是问题是:当我点击任何其他命令时它不进入处理程序,或者点击具有上下文菜单的同一个控件,只有当我点击菜单外的空白区域时才进入。

谢谢。

4

1 回答 1

1

我不知道这是一个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)
 {
 }
于 2011-01-13T12:58:51.430 回答