WPF右键菜单一般情况下是被看做一个类。当我们在具体的开发程序中,往往都是需要在某个按钮或框架内添加一个WPF右键菜单的需求。
ContextMenu类就是用来做右键菜单的对象,对于任何的控件都可以进行对ContextMenu属性的操作进行设置右键菜单的功能.
下面代码就是对一个按钮添加一个WPF右键菜单的功能:
- < Button Name="cmButton"
Height="30">Button with
Context Menu - < Button.ContextMenu>
- < ContextMenu Name="cm"
StaysOpen="true"> - < MenuItem Header="File"/>
- < MenuItem Header="Save"/>
- < MenuItem Header="SaveAs"/>
- < MenuItem Header="Recent Files"> //注意没有斜杠是因为开启二级菜单 姜彦 20170615
- < MenuItem Header="ReadMe.txt"/> // 二级菜单下的item 姜彦 20170615
- < MenuItem Header="Schedule.xls"/>
- < /MenuItem>
- < /ContextMenu>
- < /Button.ContextMenu>
- < /Button>
包括任何控件,只要有ContextMenu属性都可以添加WPF右键菜单.
工程中实际的代码:
WPF界面端代码:
<DataGrid.ContextMenu> <ContextMenu Name="cmCheck" StaysOpen="true" Background="White" > <MenuItem Header="全选" Click="cmCheckAll_Click"//点击事件 /> <MenuItem Header="全不选" Click="cmUnCheckAll_Click"//点击事件 > </MenuItem> </ContextMenu> </DataGrid.ContextMenu>
cs逻辑端代码:
/// <summary> /// 右键全选事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cmCheckAll_Click(object sender, RoutedEventArgs e) { foreach (TForwardDefineViewModel forwardDefineVM in this.forwardDefineVMs.ToList()) { forwardDefineVM.IsSelected = true; } btnCheckAll.IsChecked = true; } /// <summary> /// 右键全不选事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cmUnCheckAll_Click(object sender, RoutedEventArgs e) { foreach (TForwardDefineViewModel forwardDefineVM in this.forwardDefineVMs.ToList()) { forwardDefineVM.IsSelected = false; } btnCheckAll.IsChecked = false; }
------------------------------------------------------------------------- 姜彦20170615