c# - 如何在 Visual Studio 扩展中实现默认的大纲工具提示?
问题描述
我从这里复制了一些代码,以使扩展与 Visual Studio 2019 兼容,以替换内置大纲,因为它不会折叠 catch & finally 块中的花括号。
现在扩展工作正常,如下图所示。
但我不满意的只有一件事。当我将鼠标移动到折叠部分时,它只显示纯文本工具提示,没有任何颜色或格式。
我想让工具提示看起来像内置的。但我不知道从哪里开始。
我对此做了一些研究。我可能需要更改hoverText
此代码中的。
return new TagSpan<IOutliningRegionTag>(span, new OutliningRegionTag(false, false, GetCollapsedText(), hoverText));
我认为它可能涉及 withClassification
或ITooltipService
其他东西。
我是新手,谁能给我一些建议?一些演示代码或文档会很有帮助。谢谢。
代码在这里:CSharpOutline2019
解决方案
经过一夜的研究,我终于找到了解决方案并实现了我的目标。
如果有人对这个问题感兴趣,我会尝试解释它是如何工作的,给出一个大致的想法。
- 导入
IProjectionBufferFactoryService
以创建悬停TextBuffer
- 导入
ITextEditorFactoryService
创建一个IWpfTextView
显示悬停内容 - 将参数替换为
hoverText
我IWpfTextView
上面提到的代码中的参数
return new TagSpan<IOutliningRegionTag>(span, new OutliningRegionTag(false, false, GetCollapsedText(), hoverText));
差不多就是这样。我在这里找到了解决方案。
扩展效果很好,工具提示看起来和默认的一样。
完整代码将很快上传到CSharpOutline2019。
推荐阅读
- java - 在java中加密文件并在openssl中使用密钥aes解密
- javascript - Mongodb在项目阶段选择所有字段和条件字段选择
- sql - SQL - 基于两个条件对相似值求和
- mediawiki - 为 Mediawiki 设置多个登录选项
- c - Is there a way to either query what would realloc do, or prevent it from copying all memory on Windows and Linux?
- javascript - How to use multiple npm auth tokens
- python - AttributeError: 'Series' object has no attribute 'startswith' when use pandas dataframe condition
- html - 如何从上到下增加彩色矩形高度的大小,[css]?
- python - kivy garden mapview方法绘制行程
- python - 如何在 Flask-JWT 中设置自定义授权响应?