[深入浅出WP8.1(Runtime)]文本块(TextBlock)
4.3 文本块(TextBlock)
文本块(TextBlock)控件是用于显示少量文本的轻量控件,可以通过TextBlock呈现只读的文本,你可以把TextBlock控件理解为一种纯文本的展示控件。控件的XAML语法如下:
<TextBlock .../>
或者
<TextBlock ...>内容</TextBlock>
TextBlock在Windows Phone应用中非常普遍,它就相当于一个只是用于呈现文本的标签一样。写过HTML页面的开发者都知道,在HTML语法中,可以直接将文本写在各种HTML的标签外面,但是在XAML语法中,不能直接把文本写在XAML的各种控件之外,如果要这样做就必须将文本写到TextBlock控件中才能展示出来。文本内容可以直接放在<TextBlock>和</TextBlock>标签之间,也可以赋值给TextBlock的Text属性,这两种语法都是等效的。下面我们再来介绍TextBlock控件中的一些常用的功能特性。
(1)文字的相关属性
既然TextBlock控件是一种文本的展示的控件,那么在控件里面经常会使用到与展示文本相关的属性,如FontFamily属性(字体名称,可以设置为Courier New、Times New Roman、Verdana等字体)、FontSize属性(文字大小,以像素为单位,可以赋值为1、2等数字)、FontStyle属性字体样式,可以赋值为Arial,verdana等)、FontWeight属性(文字的粗细,可设置为Thin、ExtraLight、Light、Normal、Medium、SemiBold、Bold、ExtraBold、Black、ExtraBlack,这些值是否起作用还要取决于所选择的字体)。使用这4个文字相关的属性可以对TextBlock的文本信息的外观进行修改,搭配出一种符合你的应用程序风格的文字UI效果。
(2)文本折行的实现
除了文字的相关属性之外,对于文本的折行也是非常常用的功能。TextBlock控件默认并不会对文本字符串进行折行的,当文本过长就会直接把文本截断,所以要让TextBlock控件的文本折行是需要我们自行来实现的。TextBlock控件提供了两种方式来实现文本的折行,一种是把TextWrapping属性设置为Wrap或者WrapWithOverflow,当文本的长度超过了TextBlock控件的宽度将会另起一行来进行排列,那么Wrap和WrapWithOverflow会有一点小区别,这个区别主要是针对英文单词的,如果当这个单词的长度比TextBlock控件的宽度还长,那么设置为Wrap值就会把这个单词进行折行,如果是设置为WrapWithOverflow值则不会对一个完整的单词进行折行显示,对于中文本文这两个值是没有明显的区别的。另外一种折行的方式就是使用<LineBreak/>标签来实现,在文本和文本之间添加<LineBreak/>标签则可以实现另起一行的效果。
(3)分割TextBlock控件的文本信息
分割TextBlock控件的文本信息是指把一个TextBlock控件的文本信息分成多个部分进行展示,例如在一个TextBlock控件里面你可以把一部分的字符串设置成红色,一部分设置成绿色,这种分割的实现需要依赖TextBlock控件Inlines属性。在Inlines属性里面可以通过Run元素标签来把文本的内容分割开来,对不同部分的文本信息设置不同的样式属性,如字体,颜色等。分割TextBlock控件的文本信息对于我们在一段文字中,对不同的部分的文字设置不同的样式效果的实现提供了很好的支持。
下面给出设置文本块样式设置的示例: 演示如何在一个TextBlock控件里面的文字定义多种样式、文字断行、内容自动折行和cs文件生成TextBlock控件。
代码清单4-2:文本块控件演示(源代码:第4章\Examples_4_2)
MainPage.xaml文件主要代码
------------------------------------------------------------------------------------------------------------------
<StackPanel x:Name="stackPanel">
<!—创建一个简单的TextBlock 控件-->
<TextBlock x:Name="TextBlock2" FontSize="20" Height="30" Text="你好,我是TextBlock控件" Foreground="Red" ></TextBlock>
<!—给同一TextBlock 控件的文字内容设置多种不同的样式-->
<TextBlock FontSize="20">
<TextBlock.Inlines>
<Run FontWeight="Bold" FontSize="14" Text="TextBlock. " />
<Run FontStyle="Italic" Foreground="Red" Text="red text. " />
<Run FontStyle="Italic" FontSize="18" Text="linear gradient text. ">
<Run.Foreground>
<LinearGradientBrush>
<GradientStop Color="Green" Offset="0.0" />
<GradientStop Color="Purple" Offset="0.25" />
<GradientStop Color="Orange" Offset="0.5" />
<GradientStop Color="Blue" Offset="0.75" />
</LinearGradientBrush>
</Run.Foreground>
</Run>
<Run FontStyle="Italic" Foreground="Green" Text=" green " />
</TextBlock.Inlines>
</TextBlock>
<!—使用LineBreak设置TextBlock 控件折行-->
<TextBlock FontSize="20">
你好!
<LineBreak/>
我是TextBlock
<LineBreak/>
再见
<LineBreak/>
--2014年6月8日
</TextBlock>
<!—设置TextBlock 控件自动折行-->
<TextBlock TextWrapping="Wrap" FontSize="30">
好像内容太长长长长长长长长长长长长长长长长长长了
</TextBlock>
<!—不设置TextBlock 控件自动折行-->
<TextBlock FontSize="20">
好像内容太长长长长长长长长长长长长长长长长长长了
</TextBlock>
<!—设置TextBlock 控件内容的颜色渐变-->
<TextBlock Text="颜色变变变变变变" FontSize="30">
<TextBlock.Foreground>
<LinearGradientBrush>
<GradientStop Color="#FF0000FF" Offset="0.0" />
<GradientStop Color="#FFEEEEEE" Offset="1.0" />
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
</StackPanel>
MainPage.xam.cs文件主要代码
------------------------------------------------------------------------------------------------------------------
public MainPage()
{
this.InitializeComponent();
//在.xaml.cs页面动态生成TextBlock控件
TextBlock txtBlock = new TextBlock();
txtBlock.Height = ;
txtBlock.Width = ;
txtBlock.FontSize = ;
txtBlock.Text = "在CS页面生成的TextBlock";
txtBlock.Foreground = new SolidColorBrush(Colors.Blue);
stackPanel.Children.Add(txtBlock);
}

本文来源于《深入浅出Windows Phone 8.1 应用开发》
WP8.1 Runtime文章列表:http://www.cnblogs.com/linzheng/p/3998037.html
源代码下载:http://vdisk.weibo.com/s/zt_pyrfNHb99O
欢迎关注我的微博@WP林政 微信公众号:wp开发(号:wpkaifa)
WP8.1技术交流群:372552293
[深入浅出WP8.1(Runtime)]文本块(TextBlock)的更多相关文章
- [深入浅出WP8.1(Runtime)]文本框(TextBox)
4.4 文本框(TextBox) 文本框(TextBox)控件是表示一个可用于显示和编辑单格式.多行文本的控件.TextBox控件常用于在表单中编辑非格式化文本,例如,如果一个表单要求输入用户姓名.电 ...
- [深入浅出WP8.1(Runtime)]Toast通知
9.1 Toast通知 Toast通知是在屏幕最顶上弹出来的临时通知,是Windows Phone通用的弹出式短暂的通知,默认的系统消息都是采用Toast通知的形式,比如当你手机收到短信的时候,在手机 ...
- [深入浅出WP8.1(Runtime)]浮出控件(Flyout)
4.15 浮出控件(Flyout) 浮出控件(Flyout)是一个轻型的辅助型的弹出控件,通常会作为提示或者要求用户进行相关的交互来使用.Flyout控件与Windows Phone里面的弹出框Mes ...
- [深入浅出WP8.1(Runtime)]数据绑定的基础
11.1 数据绑定的基础 数据绑定是一种XAML界面和后台数据通信的方式,因为界面和后台数据的通信的场景有多种,并且数据于数据之间也存在着不一样的关联关系,所以数据绑定的实现技巧和方式也是多种多样的. ...
- [深入浅出WP8.1(Runtime)]生成图片和存储生成的图片文件
7.2.3 使用RenderTargetBitmap类生成图片 RenderTargetBitmap类可以将可视化对象转换为位图,也就是说它可以将任意的UIElement以位图的形式呈现.那么我们在实 ...
- [深入浅出WP8.1(Runtime)]应用文件的URI方案
6.2.4 应用文件的URI方案 在上文我们获取文件的方式都是通过应用程序的三个跟目录的文件夹对象来获取文件夹对象和文件对象,那么我们这一小节来讲解一种新的获取文件对象的方式,这种方式就是通过Uri地 ...
- [深入浅出WP8.1(Runtime)]Windows Phone 8.1和Silverlight 8.1的区别
1.2.2 Windows Phone 8.1应用程序模型 Windows Phone 8.1支持多种开发语言来开发应用程序,包括C#.VB.JavaScript和C++,那么本书的代码主要是采用C# ...
- [深入浅出WP8.1(Runtime)]Socket编程之UDP协议
13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...
- [深入浅出WP8.1(Runtime)]网络编程之HttpClient类
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
随机推荐
- Pyqt 以OOP方式动画的效果改变自身窗体大小
代码: # -*- coding:utf8 -*- from PyQt4.QtGui import * from PyQt4.QtCore import * import sys class ani( ...
- 关于python性能提升的一些方案(上)
一.函数调用优化(空间跨度,避免访问内存) 1.大数据求和,使用sum a = range(100000) %timeit -n 10 sum(a) 10 loops, best of 3: 3.15 ...
- 在python多进程中使用manager和Barrier
注意:Barrier是PYTHON3才有的功能,在2中无法测试. #!/usr/bin/env python # -*- coding: utf-8 -*- import multiprocessin ...
- 学习SQLAlchemy Core
有时间了就要慢慢看,死守DJANGO ORM,明显没有SQLAlchemy有优势. 因为SQLAlchemy针对整个PYTHON都是有用的. 找了本书,慢慢撸. <Essential.SQLAl ...
- 跨平台C的IDE
1.JetBrains的新跨平台C++ IDE,CLion已经开始EAP了,不过这货是收费的 http://confluence.jetbrains.com/display/CLION/Early+A ...
- c程序辨别系统是64位 or 32位
#include <stdio.h> int main(void) { int i = 0x80000000; ){ printf("i = %d\n", i); pr ...
- hdu 4389 数位dp
求区间内满足x%fx==0的数的个数,fx为该数各个位数上的数字之和Sample Input21 1011 20 Sample OutputCase 1: 10Case 2: 3 大小不是你想开,想开 ...
- C++中的链接错误
1.有可能是类的函数实现的时候错误. 如:应该为MVT_PAR1* GpsTcpCallback::GetMUT_PAR1(unsigned char* data,int i), 却写成了MVT_PA ...
- maven项目Tomcat controller 404
今天使用tomcat7.0.54启动现有的maven项目,可以正常启动,但是自己所写的所有的@controller注解的请求都报出了404的错误,在网上查了好久也很少找到这个问题,各种方法都尝试了也没 ...
- .NET C# Tostring() format 格式化字符串大全
C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToString ...