我有几个在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
,这是Control
。 Control
只能有一个父代,因此可以在运行中有效地在每个MenuItem
中重新为其父代。
您的选择是:
不要使用Image
,而是使用ImageSource
甚至是包含图像URI的string
。
使用x:Shared
XAML属性将资源设置为非共享。这将根据需要创建多个Image
控件。