WPF学习拾遗(二)TextBlock换行-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

WPF学习拾遗(二)TextBlock换行

简介: 原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧。 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要来的比较少, 比较值得关注的属性出了布局用的以外和数据绑定意外,就只剩下的Text属性来。
原文:WPF学习拾遗(二)TextBlock换行

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

新建一个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时候,文字会被剪切掉,而不是自动换行,这点需要注意一下

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章