TextBlock 深入介绍

一般用于显示文本的元素,我们最为经常用到的是该类的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. 按比例缩放文字,它提供一些枚举值如下表

TextBlock 深入介绍

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

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标签和TextBlock标签内定义Run标签的属性相重复时,两者的属性互不相干,但是Run设置的显示文本在TextBlock属性Text之后,要把程序运行起来,设计器直接看会是这样的错误结果,

 

TextBlock 深入介绍

 

 再看下面的例子,我们对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>

 实现的是这样的效果:

TextBlock 深入介绍 

 上面介绍到的是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属性,并且名字写错的话,不会造成什么后果,系统会使用默认的字体 ,但是从隐藏文件获取字体的话还是获取到的是错误字体;

你可能感兴趣的:(TextBlock 深入介绍)