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時候,文字會被剪切掉,而不是自動換行,這點需要注意一下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM