下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧。
新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要来的比较少,
比较值得关注的属性出了布局用的以外和数据绑定意外,就只剩下的Text属性来。
TextBlock的默认内容属性是Text。
对于换行来说,需要关注的也就是Text和Inline2个属性。
常见的TextBlock换行方法
1)转义字符换行
在XAML的后台文件中加入代码
Me.TextBlock1.Text = "AAAAAAA " + vbCrLf + "BBBBBBBB"
this.TextBlock1.Text = "AAAAAAA\nBBBBBBBB";
在XAML上写时
<TextBlock Text="AAAAAAA 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 BBBBBB
</TextBlock>
在Text的内容里赋值时候,会按照XML去解析,所以对于XML的转义字符都会起到他们的作用,而上面这种情况,虽然这种写法是
是默认获取TextBlock的内容属性,但是在赋值过程中会经过Convert按照String来处理,字符串中解析到换行符时,默认转成了空格。
所以你看到的结果AAAAAAA和BBBBBB并没有被换行表示,只是中间隔了一个空格。
另外XML的转义字符
空格 ( )
Tab ( )
回车 (
)
换行 ( )
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时候,文字会被剪切掉,而不是自动换行,这点需要注意一下