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了:
效果有问题,因为html里标记是尖括号的,而htmltextblock解析的是中括号[b],,所以我们需要转换一下。另外, 也没有处理,我们把它转成空格。最后,相关的代码和效果如下:
感觉还是不够好,而htmltextblock也是开源的,所以,以后也许会自己再造一个html2xaml的库吧。