【问题标题】:WPF RichTextBox with Inline HTML - i18n带有内联 HTML 的 WPF RichTextBox - i18n
【发布时间】:2012-04-22 23:40:25
【问题描述】:

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

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

【问题讨论】:

    标签: html wpf richtextbox rtf


    【解决方案1】:

    我通过使用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;
            }
    

    【讨论】:

      猜你喜欢
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 2011-02-01
      • 2011-02-06
      相关资源
      最近更新 更多