CozyRSS开发记录17-Html2Xaml

时间:2021-12-11 11:48:35

CozyRSS开发记录17-Html2Xaml

1、RssContentView还需要优化

上回做了RssContentView的显示,但是对于rss返回的描述(摘要),连换行的没有,更别说里面还有html描述符了。换行比较好解决,加个限定大小,再加一个自动换行的描述就可以了:

TextWrapping="Wrap"  Margin="10 12 10 10"

2、在wpf里显示html的方法

显示html,有两个方向:

A、直接显示html

B、将html转换成别的内容再显示

先说直接显示html,又有几种比较可行方案:

A.1、使用wpf的WebBrowser控件

A.2、使用winform的WebBrowser空间

A.3、使用cef(CefSharp库)

这几种方法,有的可以直接加载html的内容,有的需要先构造一个临时的html文件。都能实现效果,而且对html支持得很好,但是也有一个缺点:网页控件和wpf的原生描绘的控件不能完美的融合成一体。

将html转换成别的内容再显示,也有几种比较可行的方案:

B.1、转成md再显示(Html2Markdown库)

B.2、直接转成xaml

最终,我选择的是Html2Xaml这个方案,毕竟xaml对文档布局的表达能力不比html弱。有一个比较好的可供参考的库,RichTextBlock.Html2Xaml,然而它是给WinRt用的。千辛万苦,我还是找到了一个能在wpf用的库:HtmlTextBlock。

3、使用HtmlTextBlock

从nuget添加HtmlTextBlock,然后参考HtmlTextBlockTest添加一个控件,就可以显示html了:

CozyRSS开发记录17-Html2Xaml

效果有问题,因为html里标记是尖括号的<b>,而HtmlTextBlock解析的是中括号[b],,所以我们需要转换一下。另外, 也没有处理,我们把它转成空格。最后,相关的代码和效果如下:

CozyRSS开发记录17-Html2Xaml

CozyRSS开发记录17-Html2Xaml

感觉还是不够好,而HtmlTextBlock也是开源的,所以,以后也许会自己再造一个Html2Xaml的库吧。