html - 将超链接添加到文本 block WPF

标签 html wpf hyperlink textblock

我在数据库中有一些文本,如下所示:

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/

相关文章:

php - 如何使用 PHP 创建文件下载链接到存储在 MYSQL 数据库中的文件?

html - Delphi & CSS - 盒子模型问题

C# 将字符串写入 WebBrowser 控件中加载的 html 页面中 %name% 中定义的变量

c# - 在编译后将属性注入(inject) .NET 类

.net - 在数据模板中查找文本框

css - 使用 css 隐藏超链接行

excel - 从单元格引用插入动态超链接并将其放在复制的范围之上

html - 如何在 CSS 列计数后正确对齐

css - 如何水平居中文章中的多个图像

c# - 如何使 WinForms 表单在 AvalonDock 中作为 DockableContent 工作?