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

时间:2017-05-26 18:42:32

标签: c# wpf contextmenu wpfdatagrid menuitem

我正在使用C#和WPF在Visual Studio中开发一个项目。我有一个Datagrid,我想以编程方式创建/自定义其上下文菜单项。

以下是我目前正在创建菜单项的方式:

        MenuItem Enable;
        Enable = new MenuItem();

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

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

Enable.Icon = ???;

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

Enable.Click = ???;

如果这很简单,请道歉。我查看了与此问题相关的各种主题,但未能弄明白。

1 个答案:

答案 0 :(得分:0)

你需要的是:

<Target Name="AddNetStdMinDefine" 
        BeforeTargets="CoreCompile"
        Condition="('$(TargetFrameworkIdentifier)' == '.NETStandard' and '$(TargetFrameworkVersion.Substring(1))' &gt;= '1.4')">
   <PropertyGroup>
     <DefineConstants>$(DefineConstants);IS_MIN_NETSTANDARD1_4</DefineConstants>
   </PropertyGroup>
</Target>

只要您的图标位于App.xaml中引用的ResourceDictionary中,您应该很好,即:

将它放在您的ResourceDictionary中:

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中有这个:

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

要启用Click,请执行以下操作:

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