以编程方式自定义 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();
我正在 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();