为什么只有最后一个菜单项有图标?

Igo*_*huk 10 c# wpf

在WPF中,我以编程方式向控件添加上下文菜单.

    var contextMenu = new ContextMenu();
    contextMenu.Items.Add(new MenuItem { Header = "Copy All", Icon  = FindResource("CopyImage") });
    contextMenu.Items.Add(new MenuItem { Header = "Copy All with Headers", Icon = FindResource("CopyImage") });
    contextMenu.Items.Add(new MenuItem { Header = "Copy Selected", Icon = FindResource("CopyImage") });
    contextMenu.Items.Add(new MenuItem { Header = "Copy Selected with Headers", Icon = FindResource("CopyImage") });
Run Code Online (Sandbox Code Playgroud)

CopyImage 在我的应用程序资源中定义.

<Image x:Key="CopyImage" Source="../Images/copy.png"/>
Run Code Online (Sandbox Code Playgroud)

在运行时,只有最后一个菜单项显示图标.其他三个菜单项没有.

在此输入图像描述

有没有人对这种行为有解释?

Nat*_*n A 8

看看这篇文章.

它解释了图像一次只能在一个地方使用.这可以解释为什么它最终只会出现在代码中的最新作业.相反,定义一个BitmapImage,然后使用BitmapImage作为每个菜单项的源创建一个新图像.

来自其他文章:

为此,在某处创建一个BitmapSource作为资源:

<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />
Run Code Online (Sandbox Code Playgroud)

然后,在您的代码中,使用以下内容:

<Image Source="{StaticResource MyImageSource}" />
Run Code Online (Sandbox Code Playgroud)