文档章节

TextBlock 深入介绍

小克898
 小克898
发布于 2013/09/18 00:02
字数 1378
阅读 3249
收藏 4

一般用于显示文本的元素,我们最为经常用到的是该类的Text属性,其实显示文本有两种呈现方式,一个是设置内部文本Text,另一种就是在Inlines 集合中创建一个新的 Run 对象LineBreak对象,我们称之为内联文本

 

 

 

TextBlockSilverlight中的一个既有用又常用的控件。我们可以通过TextBlock呈现只读的文本,如

<TextBlock Text="露露非典神鱼地雷炸弹什么的"></TextBlock>

为了更好的控制呈现的文字,M$为该控件提供了很多属性,下面做一个介绍

1. FontFamily. 顾名思义,字体名称

<TextBlock Text="51MVC,justfor MVC" FontFamily="Courier New" Canvas.Top="100"Canvas.Left="100"></TextBlock>

<TextBlock Text="51MVC,justfor MVC" FontFamily="Times New Roman" Canvas.Top="110"Canvas.Left="100"></TextBlock>

<TextBlock Text="51MVC,justfor MVC" FontFamily="Verdana" Canvas.Top="120"Canvas.Left="100"></TextBlock>

注意,若需要在Silverlight中添加对中文字体的支持

2. FontSize. 文字大小,以像素为单位

<TextBlock Text="51MVC,justfor MVC" FontSize="10" Canvas.Top="100"Canvas.Left="100"></TextBlock>

<TextBlock Text="51MVC,justfor MVC" FontSize="20" Canvas.Top="110"Canvas.Left="100"></TextBlock>

<TextBlock Text="51MVC,justfor MVC" FontSize="30" Canvas.Top="120"Canvas.Left="100"></TextBlock>

3. FontStyle: 可设置两种值: Normal, Italic(斜体)

<TextBlock Text="51MVC,justfor MVC" FontStyle="Normal" FontSize="20"Canvas.Top="100" Canvas.Left="100"></TextBlock>

<TextBlock Text="51MVC,justfor MVC" FontStyle="Italic" FontSize="20" Canvas.Top="120" Canvas.Left="100"></TextBlock>

4. FontStetch. 按比例缩放文字,它提供一些枚举值如下表

这里要注意,这些值是否起作用还要取决于你选择的字体。

5. FontWeight. 文字的胖瘦。可设置为Thin, ExtraLight, Light, Normal, Medium, SemiBold, Bold, ExtraBold,Black, ExtraBlack.这些值是否起作用还要取决于你所选择的字体。

<TextBlock Text="51MVC,justfor MVC" FontWeight="Normal" Canvas.Top="100"Canvas.Left="100"></TextBlock>

<TextBlock Text="51MVC,justfor MVC" FontWeight="Bold" Canvas.Top="120"Canvas.Left="100"></TextBlock>

6. Foreground.  通过这个属性可以设置文字的前景色填充。不但可以使用颜色值,还可以通过设置solid color,gradient, image  video笔刷进行填充。还是那句话:很好,很强大

<TextBlock Text="51MVC,justfor MVC" Foreground="Purple" Canvas.Top="100"Canvas.Left="100"></TextBlock>

        <TextBlock Text="51MVC,just forMVC" Canvas.Top="120" Canvas.Left="100">

            <TextBlock.Foreground>

                <LinearGradientBrush>

                    <GradientStop Color="#FF0000FF"Offset="0.0" />

                    <GradientStop Color="#FFEEEEEE"Offset="1.0" />

                </LinearGradientBrush>

            </TextBlock.Foreground>

        </TextBlock>

7. TextDecorations. 对文字的修饰,当前Silverlight2只支持underline.

<TextBlock Text="51MVC,justfor MVC" TextDecorations="underline" Canvas.Top="100"Canvas.Left="100"></TextBlock>

8. Runs. 你可以在TextBlock中使用Run标签创建内联元素,每个Run都可以设置上面提到的属性。

<TextBlock Canvas.Top="100"Canvas.Left="100">

        <Run TextDecorations="underline">51MVC,</Run>

        <Run Foreground="Purple">just for MVC</Run>

        </TextBlock>

另外这里还要介绍一下TextBlock中文字换行的技巧

当我们使用了一个固定宽度的TextBlock时,默认情况下文字会被截断而不自动换行,如下面的例子

<ContentControl Width="100"Canvas.Top="100" Canvas.Left="100">

            <TextBlock>        

            露露神鱼非典地雷炸弹化妆品等都是好人

            --年轻的F

            </TextBlock>

        </ContentControl>

我们可以通过设置TextWrapping属性的值为“Wrap”来强制其换行

<ContentControl Width="100"Canvas.Top="100" Canvas.Left="100">

    <TextBlock TextWrapping="Wrap">        

    露露神鱼非典地雷炸弹化妆品等都是好人

    --年轻的F

    </TextBlock>

</ContentControl>

另外Silverlight还提供了LineBreak标签,它的作用相当于html中的<br />,直接看例子

<ContentControl Width="100"Canvas.Top="100" Canvas.Left="100">

      <TextBlock>        

            露露神鱼非典

            <LineBreak/>

            地雷炸弹化妆品等

            <LineBreak/>

            都是好人

            <LineBreak/>

            --年轻的F

       </TextBlock>

</ContentControl>

Run 标签内容成为 Text 属性的值,该类具有TextBlock类所具有的部分属性,比如FontFamily,FontSize,FontStretch,Foregroud等等;

LineBreak  新起一行,是换行标签

 <Grid x:Name= " ContentPanel " Grid.Row= " 1 " Margin= " 12,0,12,0 ">
            <TextBlock x:Name= " tbShow " Text= " 文字示例 " Foreground= " White "    VerticalAlignment= " Center " HorizontalAlignment= " Center ">
                <TextBlock.Inlines>
                    <Run Foreground= " Blue " Text= " ddd "  ></Run>
                </TextBlock.Inlines>
            </TextBlock>
        </Grid>

 可以看到我们在Run标签和TextBlock标签都设置的前景色和显示的文字,可是效果如何那,效果:

 

 所以我们确定如果TextBlock标签和TextBlock标签内定义Run标签的属性相重复时,两者的属性互不相干,但是Run设置的显示文本在TextBlock属性Text之后,要把程序运行起来,设计器直接看会是这样的错误结果,

 

 

 再看下面的例子,我们对Run标签的一些属性进行了一些罗列:

  <!--ContentPanel - 在此处放置其他内容-->
        <Grid x:Name= " ContentPanel " Grid.Row= " 1 " Margin= " 12,0,12,0 ">
            <TextBlock x:Name= " tbShow " Text= " 文字示例 " Foreground= " White "    VerticalAlignment= " Center " HorizontalAlignment= " Center ">
                <Run Foreground= " Blue ">前景色Blue</Run><LineBreak></LineBreak>
                 <Run FontStyle= " Italic ">字体样式Italic</Run><LineBreak></LineBreak>
                <Run  FontSize= " 30 ">字体30</Run><LineBreak></LineBreak>
                <Run  TextDecorations= " Underline ">下划线</Run><LineBreak></LineBreak>
                  <Run  TextDecorations= " Underline "
                         FontSize= " 30 "
                        FontStyle= " Italic "
                        Foreground= " Blue "
                        Text= " 综合 " ></Run><LineBreak></LineBreak>
            </TextBlock>
        </Grid>

 实现的是这样的效果:

 

 上面介绍到的是Inlines 集合的内联文本,这是说说TextBlock属性Text的一些特殊用法

 

案例代码:

<!--ContentPanel - 在此处放置其他内容-->
        <Grid x:Name= " ContentPanel " Grid.Row= " 1 " Margin= " 12,0,12,0 ">
            <TextBlock x:Name= " tbShow "  Foreground= " White "
                       VerticalAlignment= " Center " HorizontalAlignment= " Center "
                       Text= " π表示3.14 "
                       >
            </TextBlock>
        </Grid>

 它实现的效果是:

 

还比如。表示句号(。), 表示回车, 表示换行,当然你可以看出格式都差不多,可以更改最后一个字母或数字看看变成什么,比如

〇是一个圆圈;当用到换行的时候,我们可以设置TextBlock的属性TextWrapping="Wrap",该属性表示在显示文本超过容器所限制的宽度时,文本会自动换行;

也可以设置文本对齐方式,TextAlignment属性可以甚至为:left,right,center;

如果你在textblock设置了fontfamily属性,并且名字写错的话,不会造成什么后果,系统会使用默认的字体 ,但是从隐藏文件获取字体的话还是获取到的是错误字体;

© 著作权归作者所有

共有 人打赏支持
小克898
粉丝 37
博文 137
码字总数 132707
作品 0
朝阳
程序员
加载中

评论(2)

久永
久永
就是有点老了,sl2的,容易有些《老手的负担》。
lython
lython
不错不错!
在wp7中使用自定义的HtmlTextBlockControl使丰富的文字显示更方便!

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

junwong
2012/03/05
418
0
【我们一起写框架】MVVM的WPF框架(三)—数据控件

这世上,没人能一次性写出完美无缺的框架;因为,任何一个框架都需要项目的淬炼,然后才能升华,趋近完美。 所以,框架是个反复修改的东西,最终形成的东西。 如果你学了一点技术,觉得自己可...

kiba518
09/20
0
0
Windows Phone开发(10):常用控件(上)

Windows Phone的控件有几个来源,和传统的桌面应用程序开发或Web开发一样,有默认提供的控件和第三方开者发布的控件。一般而言,如果不是过于复杂的界面布局,使用默认控件就足矣。相比之下,...

junwong
2012/04/18
196
0
Silverlight2 边学边练 之八 数据绑定

本篇介绍SL2的数据绑定功能,在Silverlight2中数据绑定有3中模式: 单向模式(OneWay):源数据更新时目标数据也随之更新。 双向模式(TwoWay):源数据或目标数据更新时,彼此相互更新。 * ...

junwong
2012/03/09
46
0
windows phone 页面传值(7)

在windows phone 中微软为我们提供了页面间传递参数的解决方案,下面就为大家介绍使用方法,页面传值的案例中我们建立两个页面,一个是MainPage另一个是SecondPage页面;MianPage页面的主要代...

日久不生情
2017/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
9
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部