我有几个在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,但是发生了相同的事情。它不仅是一个,而且在多个地方使用的每个图标都具有这种行为。

最佳答案

这是因为您的资源是Image,这是ControlControl只能有一个父代,因此可以在运行中有效地在每个MenuItem中重新为其父代。

您的选择是:


不要使用Image,而是使用ImageSource甚至是包含图像URI的string
使用x:Shared XAML属性将资源设置为非共享。这将根据需要创建多个Image控件。

10-05 20:15
查看更多