在我的silverlight项目中,我有一个菜单,如果我点击以外的任何地方,我想关闭它。我为App上的click事件添加了处理程序:
AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu
但问题:当我点击任何其他命令时它没有进入处理程序,或者点击具有上下文菜单的同一控件,它是只有当我点击菜单外的空白区域时才输入。
感谢。
答案 0 :(得分:1)
我不知道这是AddHandler
的签名,只有2个参数,也许是你正在摒弃它的VB,它将第三个参数默认为False
。此参数是 processedEventsToo 参数,表示即使某些其他控件已处理该事件,您也希望执行处理程序。
我猜VB会是这样的: -
AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu, True
修改强>
让我们放弃这个VB代码,无论如何都是错误的。以下是C#中的代码应该是什么样的(你必须对翻译非常熟悉,因为Web上的绝大多数代码示例都是在C#中)。
this.AddHandler(UIElement.MouseLeftButtonDownEvent, HideMenu, true);
此代码位于包含UserControl后面的代码中,HideMenu
具有此签名: -
void HideMenu(object sender, MouseEventArgs e)
{
}