在本章中,我们将介绍Silverlight提供的显示文本的内容.文本块用于所有文本呈现和Silverlight.其他重要的功能是 :
它可以用于简单的纯文本,也可以混合使用格式化样式.
Silverlight支持一组标准的内置字体.
当您的应用程序视觉样式需要不那么普通的东西时,您也可以下载自定义字体.
要显示文本,我们使用Silverlight教科书元素,这是一个轻量级控件,用于显示少量只读文本.事实上,我们已经看到了很多,因为它的基本用法并不需要太多解释.您只需设置text属性,它就会显示该文本.
< TextBlock Text ="Print Testing"HorizontalAlignment Center"FontFamily =" Georgia"/>
TextBlock类的层次继承如下,
以下是 TextBlock 类的常用属性.
Sr.No. | & Description |
---|---|
1 | ContentEnd 获取TextBlock中文本内容结尾的TextPointer对象. |
2 | ContentStart 获取文字TextBlock中文本内容开始的指针对象. |
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 类的常用事件.
Sr. No. | 活动&说明 |
---|---|
1 | ContextMenuOpening 当系统处理显示上下文菜单的交互时发生. |
2 | SelectionChanged 文本选择发生变化时发生. |
以下是常用的方法在 TextBlock 类中.
Sr. No. | 方法&说明 |
---|---|
1 | Focus 聚焦TextBlock,好像它是一个传统的可聚焦控件. |
2 | Select 选择TextBlock中的一系列文本. |
3 | SelectAll 选择TextBlock中的全部内容. |
有时您需要对格式进行细粒度控制并为整个文本块设置一种样式.有时候对单个单词甚至字母进行格式化很有用,如果你想要这个,那么不要使用 Text 属性,而是将文本放在 TextBlock 中作为内容.如果您使用的是代码,则这相当于将项添加到 TextBlock 内联属性.
使用此方法,您可以添加一系列运行元素.每个Run支持相同的字体系列,前部权重,前景等属性,用于控制文本样式.虽然Run是一个单独的元素,但这不会破坏流程.
让我们看一个简单的例子,其中包含中的多个 Run 元素TextBlock的的.下面给出的是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>
编译并执行上述代码时,您将看到以下输出.
如您所见,使用运行,此文本块的排列格式不同元素.
顺便说一句,你不需要在运行中包装每一位文本.您可以将文本块的大部分内容保留为纯文本,只需将运行应用于需要不同格式的部分,如下所示.
<TextBlock> Hello, <Run FontWeight = "Bold" Text =" world!"/> </TextBlock>
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 标记.
<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中指定的.
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(赢dows) |
Times New Roman |
Trebuchet MS |
Verdana |