我有几个在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,但同样的事情发生了。它不仅仅是一个,在不止一个地方使用的每个图标都是这样的。
答案 0 :(得分:9)
这是因为您的资源是Image
,这是Control
。 Control
只能拥有一个父级,因此它可以动态地在每个MenuItem
中重新设置父级。
您的选择是:
Image
,而是使用ImageSource
或甚至包含图片URI的string
。x:Shared
XAML属性将资源设置为非共享。这将根据需要创建多个Image
控件。