WPF的右击菜单栏如何使用?
这其实是一个很简单的小例子,本文讨论使用C#代码动态创建,XAML如何创建不在本文讨论范围。使用的类是ContextMenu。
其实每个控件都有ContextMenu方法,本文就以在一个矩形框右击弹出菜单栏。
思路:
第一步先创建一个矩形,
第二步创建菜单栏显示个内容,
第三步把创建的菜单栏添加到矩形中,
第四步创建鼠标右击事件。
上代码:
var X = (GridHeight + GridBorder) * i + GridBorder;
var Y = j * (GridHeight + GridBorder) + GridBorder;
Rectangle MapGrid = new Rectangle();
MapGrid.Stroke = new SolidColorBrush(Colors.Black);
MapGrid.Fill = new SolidColorBrush(Colors.Transparent);
MapGrid.StrokeThickness = 1;
MapGrid.StrokeDashArray.Add(4);
MapGrid.StrokeDashArray.Add(4);
MapGrid.RadiusX = 10;
MapGrid.RadiusY = 10;
MapGrid.Width = GridHeight;
MapGrid.Height = GridHeight;
Canvas.SetLeft(MapGrid, X);
Canvas.SetTop(MapGrid,Y);
ContextMenu aMenu = new ContextMenu();
MenuItem deleteMenu = new MenuItem();
deleteMenu.Header = "删除";
deleteMenu.Click += deleClick;
aMenu.Items.Add(deleteMenu);
MenuItem editMenu = new MenuItem();
editMenu.Header = "编辑";
editMenu.Click += AddMsClick;
aMenu.Items.Add(editMenu);
MapGrid.ContextMenu = aMenu;
MapGrid.MouseRightButtonUp += new MouseButtonEventHandler(MapGridHandler);
看代码
第一行,第二行是定义矩形的大小,如何创建矩形可以看我上一篇。
ContextMenu aMenu = new ContextMenu();
MenuItem deleteMenu = new MenuItem();
deleteMenu.Header = "删除";
deleteMenu.Click += deleClick;
aMenu.Items.Add(deleteMenu);
MenuItem editMenu = new MenuItem();
editMenu.Header = "编辑";
editMenu.Click += AddMsClick;
aMenu.Items.Add(editMenu);
MapGrid.ContextMenu = aMenu;
这一段代码是创建菜单栏的,第一行是创建一个菜单栏,第二行就是菜单栏上显示的问题,第三行就是显示内容,第四行就是菜单栏触发的函数,第五行就是把创建的菜单添加到菜单栏中,下面的都重复了。看最后一行,MapGrid.ContextMenu = aMenu;这一行是把创建好的菜单栏添加到MapGrid这个矩形中。这样就完成了。
MapGrid.MouseRightButtonUp += new MouseButtonEventHandler(MapGridHandler);
这一行代码是设置这个矩形框的鼠标右击触发事件,当在矩形框中右击,就会出现选项,选择选项后会跳转到委托的函数中。