Расширение VS2010 - окно определения кода - PullRequest
2 голосов
/ 07 февраля 2012

Я прослушиваю TextViewCreated из IWpfTextViewCreationListener интерфейса.

Как я могу использовать IWpfTextView, который я получаю в качестве параметра, чтобы различать текстовое представление, принадлежащее «окну определения кода» и обычному текстовому редактору?

Спасибо!

1 Ответ

2 голосов
/ 07 февраля 2012

Вот основной код для этого.

static bool IsCodeDefWindow(
    IWpfTextView textView, 
    IVsEditorAdaptersFactoryService editorAdaptersFactoryService, 
    IVsCodeDefView vsCodeDefView)
{
    var vsTextView = editorAdaptersFactoryService.GetViewAdapter(textView);
    if (vsTextView == null)
    {
        // Happens for unshimmed IWpfTextView instances
        return false;
    }

    int isCodeDef;
    return
        ErrorHandler.Succeeded(vsCodeDefView.IsCodeDefView(vsTextView, out isCodeDef)) &&
        isCodeDef != 0;
}

IVsEditorAdaptersFactoryService - это импортируемый компонент MEF, поэтому он доступен через [Import] в вашем контейнере MEF.

IVsCodeDefView - это более старая служба Visual Studio.Если у вас есть IServiceProvider, он доступен через QueryService (обязательно используйте SVsServiceProvider в качестве типа службы и IVsServiceProvider в качестве интерфейса).

...