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
广告