【问题标题】:Programatically customize context menu item in C# WPF以编程方式自定义 C# WPF 中的上下文菜单项
【发布时间】:2017-05-26 18:42:31
【问题描述】:

我正在使用 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 = ???;

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

【问题讨论】:

标签: c# wpf contextmenu wpfdatagrid menuitem


【解决方案1】:

你需要的是这个:

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 中,您就应该很好,即:

把这个放在你的资源字典里:

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

在你的 App.xaml 中有这个:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多