我在WPF中为visual studio 2010创建了一个插件。一切看起来不错,除了停靠时,标签名称消失。请参阅下面的截图。
我在MSDN论坛上发现了一些声明以下内容的内容
- 使用IVsUIShell.GetToolWindowEnum()为mWindow获取相应的IVsWindowFrame。
- 调用IVsWindowFrame.SetProperty((int)__ VSFPROPID.VSFPROPID_Caption,“my caption”);
醇>
我已经尝试过这样做,但是我无法让IDE识别GetService中的方法来查找IVsUIShell。之后情况变得更糟。
有人理解这条指令,如果是的话,你能帮助我实现吗?好像我错过了一个引用,但其他一切看起来都很正常。
先谢谢,克里斯
答案 0 :(得分:0)
我终于明白了。这是我最终使用的代码 -
// Get the service provider on the object
Microsoft.VisualStudio.Data.ServiceProvider serviceProvider = new Microsoft.VisualStudio.Data.ServiceProvider(this._applicationObject as Microsoft.VisualStudio.OLE.Interop.IServiceProvider);
// Get the shell service
var vsUIShell = (IVsUIShell)serviceProvider.GetService(typeof(SVsUIShell));
Guid slotGuid = new Guid(guidString);
// Find the associated window frame on this toolwindow
IVsWindowFrame wndFrame;
vsUIShell.FindToolWindow((uint)__VSFINDTOOLWIN.FTW_fFrameOnly, ref slotGuid, out wndFrame);
// Set the text on the window tab name
wndFrame.SetProperty((int)__VSFPROPID.VSFPROPID_Caption, "Upgraded Task List");
它从visual studio实例中获取服务提供者。然后,您可以使用工具窗口的GUID获取工具窗口框架。最后,使用最后一行在工具窗口选项卡上设置文本。
希望这是有道理的。我花了很长时间才弄清楚这一点。