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