0

我有一个 RichTextBox,我试图用它来显示包含超链接的可翻译文本块。我遇到的问题是,如果不手动将 s 和控件编码到无法翻译的内容中,我找不到设置 text 属性的方法。有没有办法做到这一点?我尝试使用 Word 保存一个包含一个句子的简单 RTF 文件,以便提取我需要的位,但我最终得到了160 行难以破译的 RTF 文本。

理想情况下,HTML 会更容易,但这似乎不受支持

4

1 回答 1

0

我通过使用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;
        }
于 2012-04-22T15:40:25.220 回答