gpt4 book ai didi

html - 将简单的 HTML 转换为 RichTextBlock

转载 作者:太空狗 更新时间:2023-10-29 14:19:53 25 4
gpt4 key购买 nike

我从 Windows 8 开始,我正在尝试将 HTML 转换为 RichTextBlock .

have read我可以使用这个功能:HtmlUtilities.ConvertToTextTextBlock但我找不到在 RichTextBlock 中使用此功能的方法!

根据我的理解和尝试I can't extend RichTextBlock所以我不能每次都应用这个函数 RichTextBlock叫做。

此外,我找不到任何方法将文本绑定(bind)到 RichTextBlockbuilding a parser仅对于简单的 HTML(我只想要段落和斜体/粗体)似乎有点矫枉过正。另外,我不知道应该在哪里进行解析,因为我是 RichTextBlock似乎无法扩展。

我无法使用 WebView因为我需要透明度(根据我阅读的 WebView doesn't have it )。

编辑

@mydogisbox 让我意识到我的研究走得太远了。

我可以使用 HtmlUtilities.ConvertToText在我可以在 RichTextBlock 中绑定(bind)的属性的 getter 中.我无法绑定(bind)它,因为我正在尝试做 <Run Text="{Binding TextHTML}" />没有 <Paragraph>标签。

但是HtmlUtilities.ConvertToText不保留斜体或粗体。只有段落 :/.

最佳答案

我最终使用了 package avaiable on gitHub从 HTML 转换为 RickTextBlock。

基本上您只需要打开包管理器控制台(工具 > 库包管理器 > 包管理器控制台)和 install the package运行 Install-Package RichTextBlock.Html2Xaml

然后您打开 RichTextBlockProperties.cs 并且您有需要复制的行。在我的例子中,我必须添加命名空间:

xmlns:rtbx="using:EventTests.Common"

然后您可以使用以下方法绑定(bind)具有 HTML 的属性:

<RichTextBlock rtbx:Properties.Html="{Binding ...}"/>

一些问题和一些解决方案

我在这个库中发现的一个问题是它如何处理没有 div 的简单 html。喜欢:

<p>Testing <i>italic</i> and something more.</p>
<p>More testing </p>

这打印:

Testing italic and something more.
More testing

但是,我想要这样的东西:

Testing italic and something more.

More testing

所以我不得不将第二段包装在一个 div 中(并且除了第一段之外的所有段落都可以包装)。

<p>Testing <i>italic</i> and something more.</p>
<div><p>More testing </p></div>

如果您将第一段换行,那么您将有一个额外的新行。

到目前为止,这是我找到的最佳解决方案。如果您发现更好,我将不胜感激,因为我正在测试和学习。如果您找到更好的解决方案,我会接受您的。

小心

如果您的 html 中包含“<”或“&”等符号,此方法将崩溃。我建议您在尝试使用该库之前替换这些字符。

关于html - 将简单的 HTML 转换为 RichTextBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13729540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com