在wp7中使用自定义的HtmlTextBlockControl使丰富的文字显示更方便!


在wp7中使用自定义的HtmlTextBlockControl使丰富的文字显示更方便!

在wp7中要显示丰富的文字有3种方案
1.用html页面web browser
2.richtextblock 控件
3.就是下面我要介绍的方法 用自定义的HtmlTextBlockControl

其中1.2两种方法 我抽空会慢慢给大家介绍

我自定义了一个HtmlTextBlock,“兼容”TextBlock的更换,知道如何采取简单的HTML(XHTML的技术上)的方式,相当接近Web浏览器如何显示。一张图片胜过千言万语,所以直接上图吧:

 

使用方法也很简单



说明

HtmlTextBlock支持下面的HTML元素:<A>,<B>,<BR>,<EM>,<I>,<P>,<STRONG>,<U>。属性不支持异常的<A>元素的href属性
我最初计划用HtmlTextBlock从TextBlock的派生,只需重写它的Text属性。然而,TextBlock的是密封的,因此是行不通的。
下一个显而易见的方法是,在HtmlTextBlock 里面放TextBlock,所以这就是我在这里的做法。而且要达到很好的兼容性(即,能够方便地用HtmlTextBlock替换的TextBlock),意味着我需要手动实现各种HtmlTextBlock TextBlock的属性,并通过对底层的TextBlock封装。所以HtmlTextBlock实际上并不来自TextBlock的,但它的行为就像它一样。


我能想到的几个原因为什么运行可能不支持鼠标事件,但在这种情况下很方便的,如果它没有。:)
HtmlTextBlock使用XmlReader来分析其输入时显示运行和换行符元素。这使得解析实现简单,可靠,但解析时,输入的是不是XHTML(如无效的HTML或有效的HTML,其中空元素没有结尾的'/'(前:“参考”而不是“< BR />“))。

在解析错误时,HtmlTextBlock的默认行为是把它当作TextBlock一样,直接显示文字。

HTML渲染覆盖了详细的规范,但有些规则是很难预料的。具体来说,处理间隔和空格('','\ N','\ T“等)的规则可能会非常棘手,很难得到正确的解析。我做了一些尝试,以确保HtmlTextBlock如下规则下更方便,我的目标不是在html这领域实现100%达标。HtmlTextBlock应该相当密切配合的有效输入浏览器的HTML渲染,但如果你知道规则,这不是太难区分其中差异。

HtmlTextBlock显然是一个不完整的HTML渲染引擎[这不是网页浏览器!。不过,如果你要添加您的wp7应用程序的富文本的简单支持,不想做大量的工作,HtmlTextBlock可能就是你的东西!

 

codewp7 卤面网  wp7开发论坛:  http://www.codewp7.com/forum.php?mod=viewthread&tid=104

 

源代码请猛击这里

posted on 2012-02-24 12:46  yewenpeng  阅读(1962)  评论(7编辑  收藏  举报