2

インターフェイスから TextViewCreated をリッスンしていIWpfTextViewCreationListenerます。

IWpfTextViewI get をパラメーターとして使用して、「コード定義ウィンドウ」に属するテキストビューと通常のテキストエディターを区別するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

これを実現するための基本的なコードを次に示します。

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インターフェイスとして使用してください)。

于 2012-02-07T19:33:30.633 に答える