WPF 右键菜单 MenuItem 绑定图片时只显示最后一个 Icon

在做一个项目时需要给右键菜单动态绑定项时,其它内容都是正常的,绑定图片就有最后一个图标有图片。

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}"/>

修改后的效果:

相关推荐
heimeiyingwang8 小时前
【架构实战】状态机架构:订单/工单状态流转设计
观察者模式·架构·wpf
KmSH8umpK2 天前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第三篇
redis·分布式·wpf
KmSH8umpK2 天前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案
redis·分布式·wpf
武藤一雄2 天前
WPF:MessageBox系统消息框
前端·microsoft·c#·.net·wpf
武藤一雄2 天前
WPF进阶:万字详解WPF如何性能优化
windows·性能优化·c#·.net·wpf·.netcore·鲁棒性
wangnaisheng2 天前
【WPF】路由事件详细使用
wpf
雨浓YN3 天前
GKMLT通讯工具箱(WPF MVVM) - 07-倍福ADS通讯
网络·wpf
雨浓YN3 天前
GKMLT通讯工具箱(WPF MVVM) - 04-三菱MC通讯
wpf
不会编程的懒洋洋3 天前
WPF XAML+布局+控件
xml·开发语言·c#·视觉检测·wpf·机器视觉·视图
雨浓YN3 天前
GKMLT通讯工具箱(WPF MVVM) - 06-OPCUA通讯
wpf