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、使用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里标记是尖括号的<b>,而HtmlTextBlock解析的是中括号[b],,所以我们需要转换一下。另外, 也没有处理,我们把它转成空格。最后,相关的代码和效果如下:

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

时间: 2024-10-05 19:52:28

CozyRSS开发记录17-Html2Xaml的相关文章

CozyRSS开发记录5-订阅列表栏里的项

CozyRSS开发记录5-订阅列表栏里的项 1.订阅列表栏里的项的原型图 这里列表项依然参考傲游的RSS阅读器,以后可能会微调. 2.使用ControlTemplate来定制ListBoxItem 给展示RSS源名称的TextBlock设置MaxWidth和ToolTip,是为了优化名称过长的情况. 这里暂时把内容都写死,后面会使用MVVM和bindling来处理. 3.ListBox效果展示 最后,我们修改ListBox的xaml,用上我们的模版. 效果还行

CozyRSS开发记录8-解析一份RSS

CozyRSS开发记录8-解析一份RSS 1.使用Rss20FeedFormatter解析RSS 使用Rss20FeedFormatter配合XmlReader来解析RSS非常的简单,几行搞定: 来试试效果: 貌似一切顺利,爽的一笔. 2.这是一个悲伤的故事 然而,故事总是没有这么简单.我们再试一下另一个网站的RSS. 虽然可能是因为这个网站提供的RSS不规范造成的,但是这个RSS在别的RSS阅读器都没问题啊! 看看Mono里的代码: 真是呵呵啊. 3.CozyRSS.Syndication 所

CozyRSS开发记录1-原型图与Grid

CozyRSS开发记录1-原型图与Grid 1.使用MockPlus画出最简陋的原型图 这个界面参考了目前我最常使用的RSS阅读-傲游浏览器的内置RSS阅读器.主体框架划分为上.左下.右下三块,分别是标题栏(工具类)TitleBar.订阅列表栏RSSListFrame.订阅内容栏RSSContentFrame.订阅内容栏又划分为上.左下.右下三部分,分别是RSSContentTitle.RSSContentList.RssContentView. 2.建立CozyRSS工程,用Grid划分窗口

CozyRSS开发记录2-酷炫的皮肤库

CozyRSS开发记录2-酷炫的皮肤库 1.MaterialDesignToolkit 最开始微软推出Metro设计风格的时候,有人喜欢有人喷.紧接着,Ios也开始做扁平化的UI,这时候,扁平化已成为新的设计趋势.再往后,谷歌也推出了Material Design. MaterialDesignToolkit是一个帮助桌面程序快速应用Material Design的库,并且它是开源的,github地址为: https://github.com/ButchersBoy/MaterialDesign

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

CozyRSS开发记录21-默认RSS源列表 1.默认列表 在第一次使用CozyRSS的情况下,我们让它内置五个RSS源吧: 2.响应RSS源的更新 先不处理RSS源列表项的点击,响应下下拉菜单里的更新: 分别通知主窗口和RSS订阅内容栏: 主窗口负责把侧滑菜单缩回去: 内容栏里更新内容: 最终效果一般般,但是能用,不过有时候会异常,后面再来看吧:

CozyRSS开发记录16-RssContentView显示

CozyRSS开发记录16-RssContentView显示 1.RssContentView的布局和绑定 继续参照原型图来写xaml: 然后在RSSContentFrameViewModel里提供绑定的几个属性: 后面,这些属性会根据左侧RSSContentList里所选择的来显示. 2.RSSContentList选定项变色 为了体现当前选择项和其它项的区别,我们在xaml里来描述一下.这里处理了IsMouseOver和IsFocused两种触发器: 3.显示所选 最后,我们来控制显示的内容

CozyRSS开发记录6-继续补全订阅内容栏

CozyRSS开发记录6-继续补全订阅内容栏 1.订阅内容栏布局 按照之前的原型图,把订阅内容栏分成三块.Xaml如下: 2.照葫芦画瓢,完成头部和列表 头部依然使用ColorZone,右侧再放两个按钮.Xaml如下: 列表项分两行,第一行包含两个图标和内容标题,第二行是时间.Xaml如下: 3.最终效果 RssContentView部分暂时先用一个WebBrowser. 列表里的图标用到了materialDesign的PackIcon,在materialDesign的demo里可以看到所有图标

CozyRSS开发记录0-RSS阅读器开坑

CozyRSS开发记录0-RSS阅读器开坑 1.RSS RSS,全名是Really Simple Syndication,简易信息聚合. 关于RSS相关的介绍,网上可以很容易的找到.RSS阅读器是我几乎每天都用到的一个工具类软件,他的优点是: A.没有广告,只关注内容: B.可以轻松快捷的关注到一批博客和新闻网站的更新. RSS本身涉及到的技术点: A.XML,RSS使用XML来编写,它是XML的子集: B.HTTP,RSS的内容源通常是使用HTTP协议来提供的. 2.CozyRSS的目标 初步

CozyRSS开发记录20-CanResizeWithGrip

CozyRSS开发记录20-CanResizeWithGrip 1.窗口样式 首先,WindowStyle有四种: 然后,对于窗口缩放的ResizeMode,也有四种,CanResize和CanResizeWithGrip两种都可以拖放缩放,CanResizeWithGrip右下角有网格: 2.无边框并且可缩放 如果给窗口的ResizeMode设置CanResize,那么,即使给WindowStyle设置了None,窗口照样有边框,而CozyRSS要求是无边框的. 实现无边框并且可缩放,网上也提