日期:2014-05-17  浏览次数:20829 次

新时尚Windows8开发(24):文本呈现中的奥秘

TextBlock

这个东西算得上是最简单的文本呈现控件了,简单到什么程度呢?来,你也启动VS,新建一个项目,一边看一边动手试试吧。

要在TextBlock中显示简单文本,设置Text属性即可,如:

 <TextBlock Text="猪,你今天吃早餐了没?" />

然后你运行一下,嗯,看到文本了吧。

这时候我想起来,这字体太小了,看不清楚,咋办,能不能修改字体大小,当然,看:

<TextBlock Text="猪,你今天吃早餐了没?" FontSize="32" />

修改FontSize后,你会看到字体大小有所变化了。那么,你肯定会想到,那能不能加粗?来,再看看:

<TextBlock Text="猪,你今天吃早餐了没?" FontSize="32" FontWeight="Bold" />

现在是不是看到明显的变化了?

 

那么,这个时候你可能又有新问题了,除了能够显示我们平时看到字符外,能不能显示其它字符。当然可以,看看下面的例子:

先打开“字符映射表”,用了Windows这么多年,不要问我怎么打开。

字体选择Segoe UI Symbol,记住了,不要选错,然后在符号列表中,拖动滚动条往下,找到你要的符号,在窗口的左下方可以看到编码。



然后,回到VS,输入以下XAML:

<TextBlock Text="" FontSize="65" FontFamily="Segoe UI Symbol" />

代码显示不出来,我只好截图了。

使用这些符号的时候要注意:

一,字体必须为Segoe UI Symbol;

二,要注意转义,输入字符时要以 &#x 开头,这是XML/HTML转义,比如,我们在字符映射表中看到某字符的编码为 U+ E109,在XAML中我们要替换为 &#xE109;

看清楚,后面还有一个英文的分号(;)。

当你运行应用程序时,你会看到以下效果。


这种符号不错吧,以后做图标就不用自己动手画了,直接用这些符号就行了,Windows Vista以后都能用这种字体。

如果你不会写这个转义,可以去抄,在哪呢?你看看你的“解决方案管理器”,看看下面图中标注的文件。

哈哈,我就说到这里,你一定会想到怎么去抄了,我相信你的悟性是很高的。

 

上面我们都看到TextBlock显示的简单文本,那么,能复杂一点吗?能。

对于有WPF基础的朋友,我这里提一下,到Windows.UI.Xaml.Documents命名空间下你就看到答案了。

 

在TextBlock中能换行吗?还记得HTML中的br元素吗?呵呵,XAML中也有,不信你看:

        <TextBlock FontSize="32">
            第一行文本
            <LineBreak />
            第二行文本
            <LineBreak />
            第三行文本
        </TextBlock>


效果嘛,自己运行一下看看。

 

下面又有难题了,能不能达到这种效果:我在里面显示“我们都是好孩子。”,我希望好孩子三个字加粗显示。答案肯定的,来,动手做做。

        <TextBlock FontSize="32">
            我们都是<Bold>好孩子</Bold>
        </TextBlock>

这个效果不错吧。

再来看一个,我在里面显示“快乐编程,编程快乐”,我想把编程二字用绿色突出显示。

        <TextBlock FontSize="32">
            <Span Foreground="LightGreen">编程</Span>快乐,
            快乐<Span Foreground="LightGreen">编程</Span>。
        </TextBlock>

如果运行程序,就会看到下面的效果。



咱们再来一个综合一点的,

        <TextBlock FontSize="32">
            我来自<Run FontSize="50" FontWeight="Black">何方</Run>,
            像一颗<Italic FontSize="45" Foreground="Yellow">尘土</Italic>。
        </TextBlock>

看看是什么样的结果?


哈哈,这个如何?

其实这里面,Run和Span元素区别不是非常大。

 

 

RichTextBlock

相对而言,RichTextBlock要稍为强大,看看下面这个例子。

        <RichTextBlock>
            <Paragraph>
                <Span FontSize="40" FontWeight="Bold">造人</Span>li
                <LineBreak/>
                <Run FontSize="22">作者:张爱玲</Run>
            </Paragraph>
            <Paragraph TextIndent="36" FontSize="20">
                我一向是对于年纪大一点的人感到亲切,对于和自己差不多岁数的人稍微有点看不起,对于小孩则是尊重与恐惧,完全敬而远之。倒不是因为“后生可畏”。多半他们长大成人之后也都是很平凡的,还不如我们这一代也说不定。
            </Paragraph>
            <Paragraph TextIndent="36" FontSize="20">
                小孩是从生命的泉源里分出来的一点新的力量,所以可敬,可怖。
            </Parag