标签:
上回做了RssContentView的显示,但是对于rss返回的描述(摘要),连换行的没有,更别说里面还有html描述符了。换行比较好解决,加个限定大小,再加一个自动换行的描述就可以了:
TextWrapping="Wrap" Margin="10 12 10 10"
显示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。
从nuget添加HtmlTextBlock,然后参考HtmlTextBlockTest添加一个控件,就可以显示html了:
效果有问题,因为html里标记是尖括号的<b>,而HtmlTextBlock解析的是中括号[b],,所以我们需要转换一下。另外, 也没有处理,我们把它转成空格。最后,相关的代码和效果如下:
感觉还是不够好,而HtmlTextBlock也是开源的,所以,以后也许会自己再造一个Html2Xaml的库吧。
标签:
原文地址:http://www.cnblogs.com/zapline/p/5518685.html