右击菜单
上一节介绍了本次的开发工具,也刚刚创建了一个项目,接下来就要正式开发了。
一开始的构思是在窗口随便一个位置加个按钮,点击出现先要的模型,然后进行拖拽的,但是想到不小心误触肯定会导致模型重叠的问题。想想还是使用右击菜单添加模型吧。
搜索资料了解WPF实现方法,网上有很多,都是使用了 ContextMenu 。
在控件中直接声明
<Grid.ContextMenu>
<ContextMenu Name="contextMenu">
<MenuItem Header="新建">
<MenuItem Header="设备" Click="MenuItemClick"/>
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
但是我发现没有实现成功,上网查询了其他资料,都是这样写的,没有其他的特别的地方,唯一区别是别人不是在 Grid 控件中声明的,难道是这个原因?试了一下还真是。。。。。
换了写法,在Window标签加了右事件
完整代码块
<Window x:Class="ConfigurationApp.Configuration"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ConfigurationApp"
mc:Ignorable="d"
Title="Configuration" Height="450" Width="800"
Loaded="Window_Loaded"
MouseRightButtonUp="Window_MouseRightButtonUp">
<Grid>
<Grid.ContextMenu>
<ContextMenu Name="contextMenu">
<MenuItem Header="新建">
<MenuItem Header="设备" Click="MenuItemClick"/>
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</Window>
后台事件 Window_MouseRightButtonUp 代码
private void Window_MouseRightButtonUp(object sender, MouseButtonEventArgs e) => this.contextMenu.IsOpen = true;
这边代码块写法是使用方法的表达式主体
这样写也是没问题的
private void Window_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
this.contextMenu.IsOpen = true;
}
到此右击菜单功能完成。