7

我有几个在 Window.Resources 中声明的图标。它们在第一次需要出现时显示良好(例如:单击菜单,MenuItem 图标有效),但在显示另一个菜单(例如:上下文菜单)后,原始图标消失并且不会返回。就好像第一次使用图标的最后一个元素得到了保留它。

<Window.Resources>
    <Image x:Key="Chart_16"
           Source="pack://application:,,,/Resources/images/chart_16.png" />
    ...
<Window.Resources>

<MenuItem Header="Summary"
          Command="loc:AppCommands.ShowSummary"
          Icon="{StaticResource Chart_16}" />

我尝试将其保存为 24 位 PNG、隔行 24 位 PNG 和 8 位 PNG,但同样的事情发生了。它不仅仅是一个,在多个地方使用的每个图标都以这种方式运行。

4

1 回答 1

9

那是因为您的资源是一个Image,这是一个Control. Controls 只能有一个父级,因此它可以有效地在每个父级中重新MenuItem设置。

您的选择是:

  1. 不要使用Image,而是使用ImageSource甚至string包含图像的 URI。
  2. x:Shared使用XAML 属性将资源设置为非共享。这将根据需要创建多个Image控件。
于 2009-04-02T11:21:51.793 回答