首页 > 解决方案 > 如何动态(硬编码)上下文菜单

问题描述

我正在尝试动态(硬编码)我的 .cs 文件中的上下文菜单,而不是在我的 .xaml 文件中定义它。

到目前为止,我已经在 .cs 文件中定义了数据网格,如下所示:

        DataGrid dgCM = new DataGrid();
        dgCM.Style = (Style)FindResource("DgCustomStyle");
        dgCM.ItemsSource = MainWindow.m_DtTagList.DefaultView;



        dgCM.GridLinesVisibility = DataGridGridLinesVisibility.All;
        dgCM.VerticalGridLinesBrush = Brushes.Black;
        dgCM.AutoGenerateColumns = true;
        dgCM.CanUserAddRows = true;
        dgCM.CanUserDeleteRows = true;
        dgCM.IsReadOnly = false;



        dgCM.SelectionMode = DataGridSelectionMode.Extended;
        dgCM.SelectionUnit = DataGridSelectionUnit.FullRow;


        dgCM.MouseDoubleClick += DgCM_Row_DoubleClick;

        dgCM.Margin = new Thickness(0, 10, 0, 0);

现在我的目标是以类似的方式为它定义上下文菜单,当我右键单击时,它有 3 个选项复制、粘贴和删除。有人可以建议我解决它吗?期待您的回复。谢谢

标签: c#wpf

解决方案


您可以通过添加以下代码来做到这一点:

 MenuItem copy = new MenuItem() { Header = "_Copy" };
 copy.Click += (s, e) => 
 { 
    // Do something 
 };
 MenuItem paste = new MenuItem() { Header = "_Paste" };
 paste.Click += (s, e) => 
 { 
    // Do something 
 };
 MenuItem cut = new MenuItem() { Header = "_Cut" };
 cut.Click += (s, e) =>
 {
    // Do something 
 };
 dgCM.ContextMenu = new ContextMenu();
 dgCM.ContextMenu.Items.Add(copy);
 dgCM.ContextMenu.Items.Add(paste);
 dgCM.ContextMenu.Items.Add(cut);

推荐阅读