我可以回答这个问题的两个部分:
-
SDK附带的“编辑器文本修饰”模板是一个很好的开始。一旦你有了这个,看看我为一个小假多用户输入demo写的这个可视化管理器:
AgentBadgeVisualManager.cs
.这将向您展示如何在文本附近(虽然不是直接在文本下方)放置某种装饰。你还想看看
ViewCreationListener.cs
文件,其中包含
AdornmentLayerDefinition
对于可视化管理器(要更改的最重要的事情,从项目模板的默认值开始,是
Order
属性,以确保显示装饰
在…之上
任何文本)。
-
我不知道这个,对不起:(你想把这个做成某种水渍险)
UIElement
但过去,这真的取决于你。
-
从一个
ITextView
,作为
IWpfTextViewCreationListener
作为示例的一部分实现(它被传递到
AgentBadgeVisualManager
)您可以订阅
SelectionChanged
类似事件:
view.Selection.SelectionChanged += (sender, args) => /* call methods to update your adornment here */;
请注意,当所选内容为空且位于插入符号之后时,不会激发事件,因此如果要跟踪它,还需要侦听插入符号更改的事件。但是,如果您只关心a)当选择非空时,或者b)当选择在空和非空之间更改时,该事件就足够了。
有关可扩展性的更多一般信息,您可以查看我在我的
github page
,了解我是怎么写的
on my blog
,查看
VSX samples page
,或者
editor samples page on codeplex
.