我正在从IWpfTextViewCreationListener
界面收听TextViewCreated。
如何使用作为参数的IWpfTextView
区分属于“代码定义窗口”的textview和常规文本编辑器?
谢谢!
最佳答案
这是完成此操作的基本代码。
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可导入的组件,因此可以通过您的MEF容器上的[Import]
使用。IVsCodeDefView
是较旧的Visual Studio服务。如果有IServiceProvider
,则可以通过QueryService
使用它(请确保使用SVsServiceProvider
作为服务类型,并使用IVsServiceProvider
作为接口)。关于c# - VS2010扩展-代码定义窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9178728/