c# - 如何动态(硬编码)上下文菜单
问题描述
我正在尝试动态(硬编码)我的 .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 个选项复制、粘贴和删除。有人可以建议我解决它吗?期待您的回复。谢谢
解决方案
您可以通过添加以下代码来做到这一点:
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);
推荐阅读
- javascript - 为什么在javascript中解构数组比对象慢?
- c# - 作为服务原理运行时,Pulumi 无法访问刚刚创建的密钥库
- python - 单元测试的问题
- python - 如何将 spm12 Matlab 代码转换为 python?
- python - Plotly - 使用带有滑块的固定 Mesh3d 动画 Scatter3d
- python - 使用一些默认参数在Python中查找字符串中给定字符的索引
- android - 通过添加到媒体商店,使外部文件可用于 Android 11 中的任何应用
- react-native - undefined 不是对象(数据)
- r - R将NA值转换为字符以进行字符串比较
- javascript - 如何在谷歌地图中居中标记?1000 条记录