以编程方式自定义 C# WPF 中的上下文菜单项

Programatically customize context menu item in C# WPF

我正在 Visual Studio 使用 C# 和 WPF 开发一个项目。我有一个数据网格,我想以编程方式 create/customize 它的上下文菜单项。

这是我当前创建菜单项的方式:

        MenuItem Enable;
        Enable = new MenuItem();

        dgdProcessList.ContextMenu.Items.Add(Enable);
        Enable.Header = "Enable";

现在我想为该菜单项放置一个图标,但是我无法弄清楚如何将图标指向项目中的现有文件。它目前位于我项目的 Resources\Icons\SampleIcon.ico 中。我如何在此处正确引用它:

Enable.Icon = ???;

另外,我希望这个菜单项在点击时触发一个功能。我如何使用以下代码执行此操作:

Enable.Click = ???;

如果这很简单,我们深表歉意。我查看了与此问题相关的各种主题,但无法弄清楚。

你需要的是:

var imgEdit = (BitmapImage) Application.Current.FindResource("Edit");
var mnu = new MenuItem {Header = title};
if (imgEdit != null) mnu.Icon = new Image {Height = 16, Width = 16, Source = imgEdit};

只要您的图标在您 App.xaml 中引用的 ResourceDictionary 中,您就应该是好的,即:

将其放入您的 ResourceDictionary:

<BitmapImage UriSource="/MyApp;component/Images/Light/edit.png" x:Key="Edit" PresentationOptions:Freeze="True" />

并把这个放在你的 App.xaml 中:

<ResourceDictionary Source="Resources/ImageStyles.xaml" />

要启用点击功能,请执行以下操作:

mnu.Click += (o, e) => callback();