CozyRSS开发记录17-Html2Xaml

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CozyRSS开发记录17-Html2Xaml相关的知识,希望对你有一定的参考价值。

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、使用wpfWebBrowser控件

A.2、使用winformWebBrowser空间

A.3、使用cefCefSharp库)

这几种方法,有的可以直接加载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了:

 技术分享

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

 技术分享

 技术分享

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

以上是关于CozyRSS开发记录17-Html2Xaml的主要内容,如果未能解决你的问题,请参考以下文章

CozyRSS开发记录19-窗口标题栏交互

CozyRSS开发记录16-RssContentView显示

CozyRSS开发记录21-默认RSS源列表

CozyRSS开发记录14-RSS源管理初步完工

CozyRSS1.0 - 有可用性版本

F#之旅0 - 开端