Silverlight - 文字



在本章中,我們將瞭解 Silverlight 提供哪些功能來顯示文字。文字塊用於所有文字渲染和 Silverlight。其他重要功能包括:

  • 它可以用於簡單的純文字,也可以應用多種格式樣式。
  • Silverlight 支援一組標準的內建字型。
  • 當您的應用程式視覺樣式需要一些不常見的東西時,您還可以下載自定義字型。

TextBlock

要顯示文字,我們使用 Silverlight 文字塊元素,它是一個輕量級控制元件,用於顯示少量只讀文字。事實上,我們已經見過很多次了,因為它基本用法不需要太多解釋。您只需設定 text 屬性,它就會為您顯示該文字。

<TextBlock Text = "Print Testing" HorizontalAlignment Center" FontFamily = "Georgia"/> 

TextBlock 類的層次繼承如下所示:

TextBlock

以下是 TextBlock 類常用的 屬性

序號 屬性及描述
1

ContentEnd

獲取 TextBlock 中文字內容末尾的 TextPointer 物件。

2

ContentStart

獲取 TextBlock 中文字內容開頭的 TextPointer 物件。

3

IsTextSelectionEnabled

獲取或設定一個值,該值指示是否在 TextBlock 中啟用文字選擇,可以透過使用者操作或呼叫與選擇相關的 API 來實現。

4

IsTextSelectionEnabledProperty

標識 IsTextSelectionEnabled 依賴項屬性。

5

LineHeight

獲取或設定內容每行的高度。

6

MaxLines

獲取或設定 TextBlock 中顯示的最大文字行數。

7

SelectedText

獲取選中文字的文字範圍。

8

SelectionEnd

獲取 TextBlock 中選中文字的結束位置。

9

SelectionHighlightColor

獲取或設定用於突出顯示選中文字的畫刷。

10

SelectionStart

獲取 TextBlock 中選中文字的起始位置。

11

Text

獲取或設定 TextBlock 的文字內容。

12

TextAlignment

獲取或設定一個值,該值指示文字內容的水平對齊方式。

13

TextTrimming

獲取或設定當內容超出內容區域時要採用的文字修剪行為。

14

TextWrapping

獲取或設定 TextBlock 如何換行文字。

以下是 TextBlock 類常用的 事件

序號 事件及描述
1

ContextMenuOpening

當系統處理顯示上下文選單的互動時發生。

2

SelectionChanged

當文字選擇發生更改時發生。

以下是 TextBlock 類常用的 方法

序號 方法及描述
1

Focus

將焦點設定到 TextBlock 上,就像它是一個常規的可聚焦控制元件一樣。

2

Select

選擇 TextBlock 中的文字範圍。

3

SelectAll

選擇 TextBlock 中的全部內容。

Run

有時您希望對格式進行細粒度的控制,併為整個文字塊設定一種樣式。有時對單個單詞甚至字母進行格式設定很有用,如果您希望這樣做,則不要使用 Text 屬性,而是將文字作為內容放在 TextBlock 中。如果您使用程式碼,則對應於向 TextBlock 內聯屬性新增專案。

使用這種方法,您可以新增一系列 run 元素。每個 Run 都支援相同的字體系列、字型粗細、前景色等屬性來控制文字樣式。儘管 Run 是一個單獨的元素,但這不會破壞文字的流動。

讓我們看一個簡單的示例,它包含 TextBlock 內的多 Run 元素。以下是 XAML 程式碼。

<UserControl x:Class = "SilverlightRunDemo.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400">
	
   <Grid x:Name = "LayoutRoot" Background = "White"> 
	
      <TextBlock Width = "192" TextWrapping = "Wrap" FontFamily = "Verdana"> 
         <Run Text = "Hello, " /> 
         <Run FontWeight = "Bold" Text = "world!" /> 
         <Run Text = "You" /> 
         <Run FontStyle = "Italic" Text = " are  " /> 
         <Run Text = "learning" FontSize = "40" FontFamily = "01d English Text MT" /> 
         <Run Text = "   the " /> 
         <Run Text = "basics of " Foreground = "Blue" /> 
         <Run Text = " Silverlight." FontSize = "30" /> 
      </TextBlock> 
		
   </Grid> 
	
</UserControl>

編譯並執行上述程式碼後,您將看到以下輸出。

Run Inside TextBlock

如您所見,此文字塊透過使用 Run 元素以不同的格式樣式進行排列。

順便說一句,您不需要將每一小段文字都包裝在 run 中。您可以將文字塊的大部分內容保留為純文字,只需將 run 應用於需要不同格式的部分,如下所示。

<TextBlock> Hello,  
   <Run FontWeight = "Bold" Text =" world!"/> 
</TextBlock> 

LineBreak

Silverlight 通常會忽略 XAML 中的換行符。它假設大多數空格是為了使它們更容易閱讀,因為您實際上希望該空格出現。

讓我們看一下此 XAML 程式碼,其中包含三行單獨的文字。

<TextBlock>  
   This is not the end. 
   It is not even the beginning of the end. 
   But it is, perhaps, the end of the beginning 
</TextBlock> 

編譯並執行上述程式碼後,您將看到以下輸出。

LineBreak

如您所見,它忽略了換行符並一起執行了所有文字。

  • 如果您啟用了 文字換行,它將在需要換行以使文字適合的地方插入換行符,但它會忽略示例中的換行符。

  • 如果您只想新增顯式的換行符,則需要在文字塊內新增換行符標籤。其後的文字將從新行開始。

讓我們再次看一下同一個示例,方法是新增 LineBreak 標籤。

<TextBlock FontSize = "16">  
   This is not the end. 
   <LineBreak/> 
	
   It is not even the beginning of the end. 
   <LineBreak/> 
	
   But it is, perhaps, the end of the beginning
</TextBlock> 

執行上述程式碼後,您將看到它現在看起來與 XAML 中指定的相同。

Add LineBreak Tag

內建字型

Silverlight 有一組固定的內建字體系列。由於歷史原因,字型實際上具有不同的系列名稱。預設系列在 Mac OS 和 Windows 上在技術上有所不同,例如在 Mac OS 上它是 Lucida Grande,而在 Windows 上是幾乎相同但名為 Lucida Sans Unicode。

以下是一些最常用的字型。

字型
Arial
Arial Black
Comic Sans MS
Courier New
Georgia
Lucida Grande(Mac)或 Lucida Sans Unicode(Windows)
Times New Roman
Trebuchet MS
Verdana
廣告