WPF:设置MenuItem多种不同状态图标

需求描述:

  给MenuItem内部的子Image设置默认图标(鼠标leave)、鼠标hover图标、和选中时的图标。

  注:是给Menu内个别MenuItem修改,并且是弹出子菜单。

问题描述:

  1)前提:Image绑定数据源成功,且Image设置默认图标(鼠标leave)、鼠标hover图标,已经在Image的对应事件中,通过image.source设置成功;

      2)思路:在点击弹出的子菜单项时,通过修改image绑定的数据源,来设置新选中图标。

      3)问题:修改image绑定的数据源成功,但图标依然显示的是默认图标。

      4)分析:

                a、注销掉在Image设置默认图标(鼠标leave)、鼠标hover图标的代码,则点击弹出的子菜单项时,设置新选中图标成功。

                b、释放注释,跟踪点击弹出的子菜单项时,image.source的值一直不是选中的新图标。

                c、释放注释,仅注释掉给image.source的相关代码,点击弹出的子菜单项时,设置新选中图标成功。跟踪image.source的值是选中的新图标。

      5)结论:虽然修改image绑定的数据源成功,若存在给image.source 赋值操作,数据源并未起作用。

解决方法:

  1、点击弹出的子菜单项时,将image绑定的数据源设置为选中的图标;

  2、Image设置默认图标(鼠标leave)、鼠标hover图标时,不修改选中时显示的图标,仅在取消选中操作时,修改显示的图标;

      3、点击弹出的子菜单项时,不仅将image绑定的数据源设置为选中的图标,而且获取该Menuitem的Image,将image.source的值是选中的新图标。

     注:

           操作的主体是数据源,其次才是控件,正常情况下控件的显示是随数据源变化。

          

参考代码如下:

1、设置Menuitem内Image的图片

        /// <summary>
        /// 设置菜单项内的图片(因为Image.source赋值后,显示不出绑定的图片,所以又重新赋值)
        /// </summary>
        /// <param name="mi"></param>
        /// <param name="isFlag"></param>
        /// <returns></returns>
        private bool SetMenuitemImage(System.Windows.Controls.MenuItem mi,bool isFlag)
        { 
            bool isSuccess= false;
            try
            {
                if (mi != null)
                {
                    XmlElement xe = mi.Header 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值