WPF 右鍵菜單選項


      WPF右鍵菜單一般情況下是被看做一個類。當我們在具體的開發程序中,往往都是需要在某個按鈕或框架內添加一個WPF右鍵菜單的需求。

      ContextMenu類就是用來做右鍵菜單的對象,對於任何的控件都可以進行對ContextMenu屬性的操作進行設置右鍵菜單的功能.

     下面代碼就是對一個按鈕添加一個WPF右鍵菜單的功能:

  1. < Button Name="cmButton" 
    Height="30">Button with 
    Context Menu  
  2. < Button.ContextMenu> 
  3. < ContextMenu Name="cm" 
    StaysOpen="true"> 
  4. < MenuItem Header="File"/> 
  5. < MenuItem Header="Save"/> 
  6. < MenuItem Header="SaveAs"/> 
  7. < MenuItem Header="Recent Files"> //注意沒有斜杠是因為開啟二級菜單 姜彥 20170615
  8. < MenuItem Header="ReadMe.txt"/> // 二級菜單下的item 姜彥 20170615
  9. < MenuItem Header="Schedule.xls"/>   
  10. < /MenuItem> 
  11. < /ContextMenu> 
  12. < /Button.ContextMenu> 
  13. < /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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM