我正在尝试创建一个Visual Studio(2015)扩展程序,该扩展程序将代码文件中的某些文本转换为可打开Web URL的可单击链接。
我已经实现了IViewTaggerProvider
和ITagger
使其返回。我实现了一个扩展了IUrlTag
的标签,以返回该标签,以希望该标签可以自动点击。
带标记的文本呈现为链接(蓝色和带下划线的链接),但对悬停或单击没有反应。
我需要怎么做才能使标记的文本可点击?
IViewTaggerProvider实现
[Export(typeof(IViewTaggerProvider))]
[ContentType("any")]
[TagType(typeof(JiraLinkTag))]
internal class JiraLinkTaggerProvider : IViewTaggerProvider
{
public ITagger<T> CreateTagger<T>(ITextView textView, ITextBuffer buffer) where T : ITag
{
//provide highlighting only on the top buffer
if (textView.TextBuffer != buffer)
return null;
return (ITagger<T>)new JiraLinkTagger(textView, buffer);
}
}
ITagger 实现很冗长,但它返回的标签如下:
yield return new TagSpan<JiraLinkTag>(span, new JiraLinkTag(requestedSnapshot.GetText(span)));
IUrlTag 实现
internal class JiraLinkTag : IUrlTag
{
public readonly string IssueKey;
public JiraLinkTag(string issueKey)
{
IssueKey = issueKey;
}
public Uri Url
{
get { return new Uri(new Uri("https://JIRASERVER/browse/"), IssueKey); }
}
}