是否可以在Visual Studio状态栏中显示自定义图标

时间:2015-05-07 09:06:52

标签: visual-studio visual-studio-2013 visual-studio-2015 vs-extensibility

我知道使用IVSStatusBar界面在Visual Studio状态栏中显示自定义文本。关于它我甚至blogged

但是,我要求在Visual Studio状态栏上显示自定义图标。与Resharper显示解决方案错误的方式类似。点击图标后,它还会弹出一个上下文菜单。

Resharper Icon

那么,如何在Visual Studio状态栏中显示自定义图标,如果可能,还会在单击时显示菜单?。一个例子会有所帮助。

IVSStatusBar的Animation方法已经显示图标,但使用Constants中定义的预定义图标。是否可以使用自定义图标并传递给Animation方法?

在探索SDK时,我发现当显示实现该界面的窗口时,IVSStatusBarUser界面可用于显示自定义信息。但我不确定该界面是否可用于显示自定义图标。

1 个答案:

答案 0 :(得分:3)

这种状态栏可扩展性没有已发布的API。在我自己的一个扩展(PerfWatson Monitor)中,我通过搜索WPF可视化树找到状态栏元素,使用递归搜索和VisualTreeHelper,从Application.Current.MainWindow下降,在底部寻找调整大小的抓手right - Name属性设置为 "ResizeGripControl"的子元素。当我找到抓手时,我会看到它的父亲(它应该是DockPanel)并在那里插入我的控件。请注意,正如您的屏幕截图所示,Resharper会采用类似的技巧,因此您必须提出一个可以安装和不安装Resharper的策略。另请注意,状态栏的某些部分(文本,行/列信息和任何动画)都在自己的UI线程中运行,因此如果您的控件在那里结束,请小心。

我注意到你也要求扩展现有的动画。是的,您可以通过16x16帧的位图条提供自己的动画。有关示例,请参阅http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/fef208e7-b79d-4a0c-94fe-e6861196e1f5/#ba47b61c-77a8-46c8-aa10-a04211312e6c。不幸的是,这不允许点击菜单。