下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧。

新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要来的比较少,

比较值得关注的属性出了布局用的以外和数据绑定意外,就只剩下的Text属性来。

TextBlock的默认内容属性是Text。

对于换行来说,需要关注的也就是Text和Inline2个属性。

常见的TextBlock换行方法

1)转义字符换行

  在XAML的后台文件中加入代码

1 Me.TextBlock1.Text = "AAAAAAA " + vbCrLf + "BBBBBBBB"
1 this.TextBlock1.Text = "AAAAAAA\nBBBBBBBB";

  在XAML上写时

        <TextBlock Text="AAAAAAA&#x000A;BBBBBB"   Height="198" HorizontalAlignment="Left" 
                   Margin="30,27,0,0" Name="TextBlock1" VerticalAlignment="Top" Width="436" >            
        </TextBlock>

这样就可以表示显示的表示换行了,

但是下面这种情况是无效的。

        <TextBlock  Height="198" HorizontalAlignment="Left" 
                   Margin="30,27,0,0" Name="TextBlock1" VerticalAlignment="Top" Width="436" > 
            AAAAAAA&#x000A;BBBBBB
        </TextBlock>

在Text的内容里赋值时候,会按照XML去解析,所以对于XML的转义字符都会起到他们的作用,而上面这种情况,虽然这种写法是

是默认获取TextBlock的内容属性,但是在赋值过程中会经过Convert按照String来处理,字符串中解析到换行符时,默认转成了空格。

所以你看到的结果AAAAAAA和BBBBBB并没有被换行表示,只是中间隔了一个空格。

另外XML的转义字符

空格 (&#x0020;) 
Tab (&#x0009;) 
回车 (&#x000D;) 

换行 (&#x000A;)

 2)设置属性,自动换行

因为TextBlock有TextWrapping属性的支持,根据控件宽度自动设置换行,没有特殊要求的时候,这基本上能满足需求

        <TextBlock  Height="49" HorizontalAlignment="Left" 
                   Margin="30,27,0,0" Name="TextBlock1" VerticalAlignment="Top" Width="60" TextWrapping="Wrap"> 
            AAAAAAABBBBBB
        </TextBlock>

3)使用InLines属性的LineBreak来换行

简单的来说就是,显示的XAML表示用

        <TextBlock  Height="49" HorizontalAlignment="Left" 
                   Margin="30,27,0,0" Name="TextBlock1" VerticalAlignment="Top" Width="60" TextWrapping="Wrap"> 
            <Run>AAAAAA</Run>
            <LineBreak/>
            <Run>BBBBBB</Run>
        </TextBlock>

后台代码添加

        TextBlock1.Inlines.Add(New Run("AAAAAA"))
        TextBlock1.Inlines.Add(New LineBreak())
        TextBlock1.Inlines.Add(New Run("BBBB"))

另外如果RUN里面有大量的文字表示,超过了TextBlock的Width时候,文字会被剪切掉,而不是自动换行,这点需要注意一下

 

posted on 2013-01-13 20:16  A神降临  阅读(23409)  评论(2编辑  收藏  举报