W05WPF程序中,TextBlock面板替你展示你的好文采

TextBlock文本块

虽说一图胜千言,但如果你有文采的话,写了不少的歌词诗赋,总是希望把它展示出来,这时TextBlock控件就会发挥它的作用。

TextBlock从字面看就是文本块,这个控件最主要的功能就是显示文本。它只能显示文本,不能被编辑,所以又称为静态文本。虽然不能编辑内容,但是TextBlock可以使用丰富的印刷级的格式控制标记显示出专业的排版效果,从而使你的作品看起来赏心悦目。

TextBlock之所以能排版出漂亮的效果,是因为它对文本格式的控制不仅包括对文本块的整体格式控制,还包括对局部文本的格式控制,它的内容属性是TextBlock.Inlines(印刷中的“行”),也就是说,一个文本块中包含了许多“行”,我们的设置可以针对“行”来进行。同时TextBlock也保留了一个Text属性,当显示一个简单的字符串时,我们可以使用这个属性。

对局部文本的格式控制,TextBlock用的是所谓的“内联元素Inline Element”,也就是说,它们的控制对象是一行,甚至是一行中的某些字符。通过“内联元素”,TextBlock控件支持设置部分文本的样式。



好了,说了这么多,我们具体看看,怎么样通过设置TextBlock的属性,为我们做出专业的排版效果。

首先,是文本块的整体设置,包括以下属性:

(1)Foreground 前景色,即设置文字的颜色,文本块中单独设置的行或字符不受影响。

(2)Background 背景色,可以设置背景色,甚至可以用图片设置背景。例如,以苏轼画像为背景:

(3)Text 文本,即文本块显示的内容

(4)FontSize 字号,即字体大小

(5)FontFamily 字库,或字体,如宋体、黑体等

(6)FontWeight 字重,

(7)FontStyle (Italic) 字体样式,如斜体字等

(8)TextWrapping (Wrap) 自动换行设置,它可以有NoWrap(不换行。缺省值)、Wrap(换行)、WrapWithOverflow(换行但允许超出文本块的宽度)。WrapWithOverflow在换行的算法没办法确定如何正确换行(比如某个单词超长、换不换都超出宽度)时,允许行超出块的宽度。

(9)TextTrimming (CharacterEllipsis, WordEllipsis, None)当TextWrapping 属性设置为NoWrap(不换行。缺省值)时,窗口缩小时右侧文本的修剪方式,分别是:截断到任意字符(最后一个字符后显示…)、截断到某个单词(一个完整单词后显示…)、不截断。

(10)TextAlignment (center, justify, left, right) 文本对齐方式,有居中对齐、分散对齐、左对齐、右对齐。

对了,如果要换行,要用到元素。

其次,是局部文本的格式设置,包括以下元素:

(1)Run 设置一个新行,内容包含普通文本,在Run元素中可以使用上面的部分属性,如ForeGround、FontSize等,对文本行中的部分文本单独进行格式设置。如:

hello

(2)TextDecorations文本修饰属性内联元素,可用于Run元素中,其值有:None无修饰、OverLine上划线、 Strikethrough删除线、 Baseline基线、Underline下划线。

(3)Bold、ltalic 和Underline应用粗体、斜体以及下划线格式,可以单独使用修饰文本。

最后,给个例子应用一下

HorizontalAlignment="Center"

Margin="0" Foreground="Purple"

FontSize="22" TextAlignment="Left">

xml:space="preserve" >

江城子·密州出猎

【作者】苏轼

【朝代】宋

老夫聊发少年狂,

左牵黄,右擎苍,

锦帽貂裘 ,千骑卷平冈。

为报倾城随太守,亲射虎,看孙郎。

FontStyle="Italic" FontSize="40"

TextDecorations="Strikethrough">

酒酣胸胆尚开张,

鬓微霜,又何妨!

持节云中,何日遣冯唐?

会挽雕弓如满月,西北望,射天狼。

效果如何,你自己拷贝到Xaml文件中,运行一下,就知道了。

若对你有帮助的话,请帮忙关注、点赞、转发!

原文链接:,转发请注明来源!