我有一个 RichTextBox,我试图用它来显示包含超链接的可翻译文本块。我遇到的问题是,如果不手动将 s 和控件编码到无法翻译的内容中,我找不到设置 text 属性的方法。有没有办法做到这一点?我尝试使用 Word 保存一个包含一个句子的简单 RTF 文件,以便提取我需要的位,但我最终得到了160 行难以破译的 RTF 文本。
理想情况下,HTML 会更容易,但这似乎不受支持
我有一个 RichTextBox,我试图用它来显示包含超链接的可翻译文本块。我遇到的问题是,如果不手动将 s 和控件编码到无法翻译的内容中,我找不到设置 text 属性的方法。有没有办法做到这一点?我尝试使用 Word 保存一个包含一个句子的简单 RTF 文件,以便提取我需要的位,但我最终得到了160 行难以破译的 RTF 文本。
理想情况下,HTML 会更容易,但这似乎不受支持
我通过使用http://htmlagilitypack.codeplex.com/解析出锚点来解决这个问题。
public static IEnumerable<Inline> ParseHtml(string text)
{
var inlines = new List<Inline>();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(text);
if(doc.ParseErrors==null ||!doc.ParseErrors.Any()) {
foreach (var childNode in doc.DocumentNode.ChildNodes) {
switch(childNode.Name.ToLowerInvariant()) {
case "a":
var lnk = new Hyperlink(new Run(childNode.InnerText));
lnk.NavigateUri = new Uri(childNode.Attributes["href"].Value);
inlines.Add(lnk);
break;
default:
inlines.Add(new Run(childNode.InnerText));
break;
}
}
}
return inlines;
}