2017-03-01 27 views
1

使用以下代码我可以获取.css和.js文件的ITextDocument等,但DocumentService.TryGetTextDocument()方法返回的是空的ITextDocument文档,用于。 html文件。无法从HTML文本缓冲区中检索ITextDocument

[Export(typeof(IVsTextViewCreationListener))] 
[ContentType("text")] 
[TextViewRole(PredefinedTextViewRoles.PrimaryDocument)] 
internal sealed class CommandProvider : IVsTextViewCreationListener 
{ 
    [Import(typeof(IVsEditorAdaptersFactoryService))] 
    private IVsEditorAdaptersFactoryService EditorService { get; set; } 

    [Import(typeof(ITextDocumentFactoryService))] 
    private ITextDocumentFactoryService DocumentService { get; set; } 

    public void VsTextViewCreated(IVsTextView textViewAdapter) 
    { 
     var textView = EditorService.GetWpfTextView(textViewAdapter); 
     if (!DocumentService.TryGetTextDocument(textView.TextBuffer, out ITextDocument document)) 
      return; 
    } 
} 

问题:如何从HTML文本缓冲区中检索ITextDocument?

我需要在执行特定命令时处理文档的内容。

任何帮助大大appeciated!

回答

0

请修改您的代码,它适用于我的一面。

public void VsTextViewCreated(IVsTextView textViewAdapter) 
{ 
    var textView = EditorService.GetWpfTextView(textViewAdapter); 
    ITextDocument document = null; 
    if (!DocumentService.TryGetTextDocument(textView.TextDataModel.DocumentBuffer, out document)) 
     return; 
} 
+0

改变的第一个参数** ** DocumentService.TryGetTextDocument从** ** textView.TextBuffer到** ** textView.TextDataModel.DocumentBuffer作品。谢谢! –