Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从命令Visual Studio Extension 2017获取IWpfTextView_C#_Visual Studio 2017_Visual Studio Extensions - Fatal编程技术网

C# 如何从命令Visual Studio Extension 2017获取IWpfTextView

C# 如何从命令Visual Studio Extension 2017获取IWpfTextView,c#,visual-studio-2017,visual-studio-extensions,C#,Visual Studio 2017,Visual Studio Extensions,我需要显示弹出窗口使用TextView装饰,它需要IWPTextView。 有一个古老的代码: private IWpfTextView GetWpfTextView(IVsTextView vTextView) { IWpfTextView view = null; IVsUserData userData = vTextView as IVsUserData; if (null != userData) { IWpfTextViewHost viewHo

我需要显示弹出窗口使用TextView装饰,它需要IWPTextView。 有一个古老的代码:

private IWpfTextView GetWpfTextView(IVsTextView vTextView)
{
   IWpfTextView view = null;
   IVsUserData userData = vTextView as IVsUserData;

   if (null != userData)
   {
      IWpfTextViewHost viewHost;
      object holder;
      Guid guidViewHost = DefGuidList.guidIWpfTextViewHost;
      userData.GetData(ref guidViewHost, out holder);
      viewHost = (IWpfTextViewHost)holder;
      view = viewHost.TextView;
   }
   return view;
}
但当转到Visual studio 2017扩展时,缺少DefGuidList.guidIWpfTextViewHost。所以我再也无法获得IWPTextView了

请帮帮我。
谢谢大家。

谢尔盖·弗拉索夫回答后,我找到了一个解决方案:

private IWpfTextView GetWpfView()
{
        var textManager = (IVsTextManager)ServiceProvider.GetService(typeof(SVsTextManager));
        var componentModel = (IComponentModel)this.ServiceProvider.GetService(typeof(SComponentModel));
        var editor = componentModel.GetService<IVsEditorAdaptersFactoryService>();

        textManager.GetActiveView(1, null, out IVsTextView textViewCurrent);
        return editor.GetWpfTextView(textViewCurrent);
}

再见,非常感谢!对于其他人:您必须添加参考手册。添加引用->程序集->扩展,然后选择Microsoft.VisualStudio.ComponentModelHost和Microsoft.VisualStudio。Editor@Tan阮,这个问题已经解决了,对吗?如果是这样的话,请将解决方案作为答案张贴出来好吗?因此,您可以稍后将其标记为答案,并帮助其他与您的问题相同的社区成员。感谢在此处共享您的解决方案,请将其标记为答案,祝您愉快:)
 Microsoft.VisualStudio.ComponentModelHost 
 Microsoft.VisualStudio.Editor