当前位置:网站首页 / vs2015 / 正文

[ay vs2015 sdk]开发笔记[5]-Find与 改命令外观 与 UpdateUI 与 本地化

时间:2016年07月14日 | 作者 : aaronyang | 分类 : vs2015 | 浏览: 1310次 | 评论 0

接着上一个的demo

我们继续写

        private void OnBeforeQueryStatus(object sender, EventArgs e)
        {
            var myCommand = sender as OleMenuCommand;
            if (null != myCommand)
            {
                myCommand.Text = "New Text 禁用了";
                ChangeMyCommand(myCommand.CommandID.ID, false);
            }
        }
        public bool ChangeMyCommand(int cmdID, bool enableCmd)
        {
            bool cmdUpdated = false;
            var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
            var newCmdID = new CommandID(CommandSet, cmdID);
            MenuCommand mc = mcs.FindCommand(newCmdID);
            if (mc != null)
            {
                mc.Enabled = enableCmd;
                cmdUpdated = true;
            }
            return cmdUpdated;

        }

单击后,设置enabled属性为false,就禁用了。

效果图:

1IF.gif

还有可见性,checked是否选中,有很多

blob.png



====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========


UpdateUI

vs太多扩展包了,所以不可能用轮询扩展包的方式去做,所以提供了UpdateUI方式

SVsUIShell服务得到 IVsUIShell 接口,例如下面

    void UpdateUI(Microsoft.VisualStudio.Shell.ServiceProvider sp)
        {
            IVsUIShell vsShell = (IVsUIShell)sp.GetService(typeof(IVsUIShell));
            if (vsShell != null)
            {
                int hr = vsShell.UpdateCommandUI(0);
                Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr);
            }
        }

如果UpdateCommandUI的参数是true,那么同步的方式去更新ui

我们推荐false,false可以保持良好的性能。

如果你不想使用缓存,可以在vsct文件中,创建Command的地方加上DontCache 的flag

请谨慎使用这个flag,否则性能会降低。 关于CommandTag:msdn参考

在VS package中,承载一个ActiveX控件,立马激活的那种,UpdateUI会很便捷。

IVsUIShell接口的UpdateCommandUI 和IOleInPlaceComponentUIManager的UpdateUI,更新不会立即执行,而是等到idle时机更新。shell会缓存命令,维持性能。

请注意,您可以获得 IOleInPlaceComponentUIManager 接口通过调用 QueryInterface 方法 IOleComponentUIManager 对象,或通过获取从接口 SOleComponentUIManager 服务



关于本地化命令的文本,具体参考



====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========



推荐您阅读更多有关于“vs2015vsix开发,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

抖音号:wpfui,可以看到我的很多作品效果

AYUI8社区版Github地址:前往获取

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF,目前工作繁忙,不接任何活

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

兼容XP到win10,vs2015/2017/2019,最新AYUI:7.6.5.5

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表