在Silverlight中我們使用Label、TextBlock、TextBox等控件的時候經常會遇到換行的問題,在這里我們以這三個典型的控件來看看換行方式。在本文中我們把換行方式分為自動換行和手動換行來看。
自動換行
Label控件在Silverlight中不支持自動換行。
TextBlock和TextBox可以通過設置TextWrapping="Wrap"屬性讓文字超過控件寬度時自動換行。
手動換行
Label、TextBlock、TextBox控件都可以在后台中使用Environment.NewLine屬性來手動換行。
TextBlock可以在Xaml代碼中使用<LineBreak>標簽來手動換行。
如果想要再TextBlock框中使用回車鍵的方式換行輸入文字,則需要設置AcceptsReturn="True"屬性。
首先我們看自動換行的Xaml實例代碼實現如下:
<Border BorderBrush="Blue" BorderThickness="1" Width="180" Height="300"> <Canvas> <TextBlock Height="49" HorizontalAlignment="Left" Margin="42,111,0,0" Name="textBlock1" Text="自動換行我下一句話將要換行了已經換行。" VerticalAlignment="Top" TextWrapping="Wrap" Width="120" /> <TextBox Height="60" HorizontalAlignment="Left" Margin="42,192,0,0" Name="textBox1" VerticalAlignment="Top" Text="自動換行我下一句話將要換行了已經換行。" TextWrapping="Wrap" AcceptsReturn="True" Width="120" /> </Canvas> </Border>
其次我們來看手動換行的Xaml實例代碼如下:
<Border BorderBrush="Blue" Margin="300 0 50 50" BorderThickness="1" Width="180" Height="300"> <Canvas> <sdk:Label Height="45" HorizontalAlignment="Left" Margin="42,10,0,0" Name="label2" VerticalAlignment="Top" Width="220" /> <TextBlock Height="45" HorizontalAlignment="Left" Margin="42,60,0,0" Name="textBlock2" Text="" VerticalAlignment="Top" Width="178" > <Run>手動換行你下一句話將要換行了,</Run> <LineBreak/> <Run>已經換行。</Run> </TextBlock> <TextBlock Height="45" HorizontalAlignment="Left" Margin="42,110,0,0" VerticalAlignment="Top" Name="textBlock3" Text="" Width="178"></TextBlock> <TextBox Height="45" HorizontalAlignment="Left" Margin="42,160,0,0" Name="textBox2" VerticalAlignment="Top" AcceptsReturn="True" Width="210" > </TextBox> </Canvas> </Border>
最后我們看手動換行的Xaml.cs代碼實現如下:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this.label2.Content = "手動換行你下一句話將要換行了," + Environment.NewLine + "已經換行。";
this.textBox2.Text = "手動換行你下一句話將要換行了," + Environment.NewLine + "已經換行。";
this.textBlock3.Text= "手動換行你下一句話將要換行了," + Environment.NewLine + "已經換行。";
}
}
如需本文源碼請點擊 SLTest.zip 下載,本實例實現效果如下圖: