下午在幫組里的同事解決一個小問題,為了以后方便,把就把它收集一下吧。
新建一個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
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時候,文字會被剪切掉,而不是自動換行,這點需要注意一下