我在数据库中有一些文本,如下所示:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis tellus nisl, venenatis et pharetra ac, tempor sed sapien. Integer pellentesque blandit velit, in tempus urna semper sit amet. Duis mollis, libero ut consectetur interdum, massa tellus posuere nisi, eu aliquet elit lacus nec erat. Praesent a commodo quam.
[a href='http://somesite.example]some site[/a]
Suspendisse at nisi sit amet massa molestie gravida feugiat ac sem. Phasellus ac mauris ipsum, vel auctor odio
我的问题是:如何在 TextBlock
中显示 Hyperlink
?我不想为此目的使用 webBrowser 控件。
我也不想使用这个控件:https://www.codeproject.com/Articles/33196/WPF-Html-supported-TextBlock
最佳答案
显示比较简单,导航是另外一个问题。 XAML 是这样的:
<TextBlock Name="TextBlockWithHyperlink">
Some text
<Hyperlink
NavigateUri="http://somesite.example"
RequestNavigate="Hyperlink_RequestNavigate">
some site
</Hyperlink>
some more text
</TextBlock>
启动默认浏览器以导航到您的超链接的事件处理程序将是:
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) {
System.Diagnostics.Process.Start(e.Uri.ToString());
}
要使用从数据库中获得的文本来完成此操作,您必须以某种方式解析文本。了解文本部分和超链接部分后,您可以在代码中动态构建文本 block 内容:
TextBlockWithHyperlink.Inlines.Clear();
TextBlockWithHyperlink.Inlines.Add("Some text ");
Hyperlink hyperLink = new Hyperlink() {
NavigateUri = new Uri("http://somesite.example")
};
hyperLink.Inlines.Add("some site");
hyperLink.RequestNavigate += Hyperlink_RequestNavigate;
TextBlockWithHyperlink.Inlines.Add(hyperLink);
TextBlockWithHyperlink.Inlines.Add(" Some more text");
关于html - 将超链接添加到文本 block WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2092890/