我正在从IWpfTextViewCreationListener
界面收听TextViewCreated。
如何使用IWpfTextView
作为参数来区分属于“代码定义窗口”的textview和普通文本编辑器?
谢谢!
答案 0 :(得分: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可导入组件,因此可以通过MEF容器上的[Import]
获取。
IVsCodeDefView
是较旧的Visual Studio服务。如果您有IServiceProvider
,则QueryService
可以使用SVsServiceProvider
(请务必使用IVsServiceProvider
作为服务类型,并使用{{1}}作为接口。