软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 电脑教程 > 编程开发 > .NET技术 > Silverlight 4 右键菜单的两种处理方法

Silverlight 4 右键菜单的两种处理方法

方法一:请阅读大气象学习园地的方法。

http://www.veryhuo.com/a/view/40081.html

文章简明扼要,很受益。

我试图在“ContextMenuService.SetContextMenu(btnRight, cm);//为控件绑定右键菜单”

这一句中使用一个现成的菜单代替cm ,报错:元素已经是另一个元素的子元素。

所以,如果你象我一样,不喜欢使用代码创建菜单,请使用另一种方法:

方法二:

第1步、设计:直接在设计界面中创建ContextMenu,添加N项MenuItem,MenuItem还可以添加子菜单,如果你不知道怎么使用VS2010设计菜单,请查阅其它资料。需要注意两点,一是最好将菜单放在顶层容器中,以便在各个控件边上自由走动;二是要事先设置Visibility属性为Collapsed,即先不显示。

第2步、定位:例如需要显示在控件A下方左对齐。需要在控件A的MouseEnter事件中添加以下代码:

Dim p1 = e.GetPosition(Me.LayoutRoot)
Dim p2 = e.GetPosition(sender)
Dim p = New Point(p1.X - p2.X, p1.Y - p2.Y + Me.btnTestMenu.Height)
Me.menuMain.SetValue(ContextMenu.MarginProperty, New Thickness(p.X, p.Y, 0, 0))
Me.menuMain.Visibility = Visibility.Visible

前3行代码,是为了获得控件A左下角的绝对坐标;原理是使用两个相对位置相减。注:btnTestMenu就是控件A。

第4行代码是将菜单放在指定位置上;

第5行代码是显示。

其它处理:在控件A的MouseLeave事件中要添加代码: Me.menuMain.Visibility = Visibility.Collapsed ;在菜单本身的MouseEnter事件中添加代码:Me.menuMain.Visibility = Visibility.Visible,在菜单MouseLeave事件中添加代码Me.menuMain.Visibility = Visibility.Collapsed 。

OK了,一般的菜单就可以了。

至于在某个容器中成为右键菜单,定位更加简单,可以参照以上实现。

感谢一些人共享了专业知识,使我接触到SL而不感到无助。

(来源:博客园)

    相关阅读
    栏目导航
    推荐软件