在做一个项目时需要给右键菜单动态绑定项时,其它内容都是正常的,绑定图片就有最后一个图标有图片。
XML
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Icon">
<Setter.Value>
<Image Height="16" Width="16" Stretch="Uniform"
Source="{Binding ImageName,Converter={StaticResource StringToResImageSource}}"/>
</Setter.Value>
</Setter>
<Setter Property="Header" Value="{Binding Name}"/>
<Setter Property="Command" Value="{Binding ReplaceCommand}" />
<Setter Property="CommandParameter" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItems}" />
</Style>
</MenuItem.ItemContainerStyle>

这时想着用改成使用资源来显示,发现也是只显示最后一张图片。后来在网上看到说把图像改成资源然后把 x:Shared="false" 设置成假就能成功。经过修改终于能显示出来了。
XML
<Image x:Key="img_mitem" x:Shared="false"
Width="16px" Height="16px"
Stretch="Uniform" Source="{Binding ImageName,Converter={StaticResource StringToResImageSource}}" />
XML
<Setter Property="Icon" Value="{StaticResource img_mitem}"/>
修改后的效果:
