TOC

This article has been localized into Chinese by the community.

基本控制項:

TextBlock控制項

TextBlock 本身不是控制項,因為它並沒有繼承Control類別,但是它使用起來和WPF框架中的其他控制項類似,所以為了方便我們還是稱它為控制項。

TextBlock是WPF中最基本的控制項,但非常好用。它允許你顯示文字在螢幕上,像是Label控制項一樣,但使用起來比Label更簡單、使用更少資源作法。一般來說,Label用於短、單行的文字(但可能包含其它,像是圖片等...),而TextBlock對於多行的文字非常適合(但只能是文字形式)。Label和TextBlock都有自己獨特的優點,所以怎麼使用就取決於你的情況。

在"Hello, WPF!"的章節中,我們已經使用了TextBlock控制項,但是現在,我們要來看看TextBlock最簡單的形式:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBlockSample" Height="100" Width="200">
    <Grid>
		<TextBlock>This is a TextBlock</TextBlock>
    </Grid>
</Window>

如果你已經閱讀了前面的章節,你會覺得這非常簡單,那這裡應該沒有什麼新東西了。在TextBlock標籤中的文字,是表示TextBlock的Text 屬性的簡短方法。

在下一個例子中,我們用更長的文字來展示TextBlock如何處理它。同時也增加一點margin讓它看起來更好一點。

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBlockSample" Height="100" Width="200">
    <Grid>
		<TextBlock Margin="10">This is a TextBlock control and it comes with a very long text</TextBlock>
    </Grid>
</Window>

長字串處理

如截圖所示,TextBlock非常適合用來處理長或多行文字,但預設不會進行其他動作。在這個例子中,文字太長以至於無法完整呈現在視窗中,所以WPF盡可能的將文字呈現到停止。

幸運地,有許多方法可以處理這個問題。在下一個例子中,我將告訴你所有的方法,並在之後一一說明。

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TextBlockSample" Height="200" Width="250">
    <StackPanel>
		<TextBlock Margin="10" Foreground="Red">
			This is a TextBlock control<LineBreak />
			with multiple lines of text.
		</TextBlock>
		<TextBlock Margin="10" TextTrimming="CharacterEllipsis" Foreground="Green">
			This is a TextBlock control with text that may not be rendered completely, which will be indicated with an ellipsis.
		</TextBlock>
		<TextBlock Margin="10" TextWrapping="Wrap" Foreground="Blue">
			This is a TextBlock control with automatically wrapped text, using the TextWrapping property.
		</TextBlock>
	</StackPanel>
</Window>

我們有三個不同顏色的TextBlock(使用Foreground屬性)方便觀看,它們各以不同的方法處理文字太長的問題。

紅色的TextBlock使用了LineBreak標籤在指定的地方手動換行。這讓你可以絕對的控制在你想換行的地方換行,但在許多情況下用起來並不靈活。如果使用者放大視窗,有了足夠的空間可以完整顯示整行文字,文字依然在同樣的地方換行。

綠色的TextBlock 使用了 TextTrimming屬性並設為CharacterEllipsis,讓TextBlock在沒有足夠空間的時候顯示...。在沒有足夠空間顯示這麼多文字時,這是一種常見的方法。這也很適合用在當空間不足而且你不想使用多行的時候。你也可以使用CharacterEllipsis的另一種WordEllipsis,當空間不足的時候,以最後一個單字為單位顯示,就不會有單字只顯示一部分的問題發生。

藍色的TextBlock使用了TextWrapping 屬性並設為Wrap,讓TextBlock在沒有足夠空間顯示時自動換行。與第一個我們手動換行的TextBlock相反,它是完全自動的,甚至在TextBlock的空間變動時也會自動調整。試著在這個例子中放大縮小視窗,你將會看到在不同情況下它是如何調適的。

這是在TextBlock中,所有簡單的處理法。在下一個章節中,我們將探討一些TextBlock更高級的功能,讓我們可以創造更多樣式的TextBlock。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!