WPF学习拾遗(二)TextBlock换行
下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧。
新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要来的比较少,
比较值得关注的属性出了布局用的以外和数据绑定意外,就只剩下的Text属性来。
TextBlock的默认内容属性是Text。
对于换行来说,需要关注的也就是Text和Inline2个属性。
常见的TextBlock换行方法
1)转义字符换行
在XAML的后台文件中加入代码
Me.TextBlock1.Text = "AAAAAAA " + vbCrLf + "BBBBBBBB"
this.TextBlock1.Text = "AAAAAAA\nBBBBBBBB";
在XAML上写时
<TextBlock Text="AAAAAAA BBBBBB" Height="198" HorizontalAlignment="Left"
Margin="30,27,0,0" Name="TextBlock1" VerticalAlignment="Top" Width="436" >
</TextBlock>
这样就可以表示显示的表示换行了,
但是下面这种情况是无效的。
<TextBlock Height="198" HorizontalAlignment="Left"
Margin="30,27,0,0" Name="TextBlock1" VerticalAlignment="Top" Width="436" >
AAAAAAA BBBBBB
</TextBlock>
在Text的内容里赋值时候,会按照XML去解析,所以对于XML的转义字符都会起到他们的作用,而上面这种情况,虽然这种写法是
是默认获取TextBlock的内容属性,但是在赋值过程中会经过Convert按照String来处理,字符串中解析到换行符时,默认转成了空格。
所以你看到的结果AAAAAAA和BBBBBB并没有被换行表示,只是中间隔了一个空格。
另外XML的转义字符
空格 ( )
Tab ( )
回车 (
)
换行 ( )
2)设置属性,自动换行
因为TextBlock有TextWrapping属性的支持,根据控件宽度自动设置换行,没有特殊要求的时候,这基本上能满足需求
<TextBlock Height="49" HorizontalAlignment="Left"
Margin="30,27,0,0" Name="TextBlock1" VerticalAlignment="Top" Width="60" TextWrapping="Wrap">
AAAAAAABBBBBB
</TextBlock>
3)使用InLines属性的LineBreak来换行
简单的来说就是,显示的XAML表示用
<TextBlock Height="49" HorizontalAlignment="Left"
Margin="30,27,0,0" Name="TextBlock1" VerticalAlignment="Top" Width="60" TextWrapping="Wrap">
<Run>AAAAAA</Run>
<LineBreak/>
<Run>BBBBBB</Run>
</TextBlock>
后台代码添加
TextBlock1.Inlines.Add(New Run("AAAAAA"))
TextBlock1.Inlines.Add(New LineBreak())
TextBlock1.Inlines.Add(New Run("BBBB"))
另外如果RUN里面有大量的文字表示,超过了TextBlock的Width时候,文字会被剪切掉,而不是自动换行,这点需要注意一下
WPF学习拾遗(二)TextBlock换行的更多相关文章
- WPF学习笔记二 依赖属性实现原理及性能分析
在这里讨论依赖属性实现原理,目的只是学习WPF是怎么设计依赖属性的,同时更好的使用依赖属性. 首先我们来思考一个简单的问题:我们希望能验证属性的值是否有效,属性变更时进行自己的处理.回顾一下.net的 ...
- WPF学习(二)布局与菜单、工具栏
布局 //表格①Grid//3列 4行的表格 <Grid> <Grid.ColumDefinitions> <ColumnDefinti ...
- WPF学习(二) - 绑定
绑定,这个看起来很神奇的东西,于我这种喜欢刨根儿的人而言,理解起来非常困难. WPF绑定的核心思想是:数据层属性值的改变,能反应给展示层,反之亦然,并且这个响应的过程能被分离出来. 传统Winf ...
- WPF学习笔记二之依赖属性
1.快捷生成依赖属性:propdp然后按两次tab键 2.应用场景:自定义控件 什么是依赖属性:依赖属性自己没有值,通过依赖别人(如Binding)来获得值. 依赖属性为什么会出现:控件常用字段有限, ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- 【WPF学习】第五十章 故事板
正如上一章介绍,WPF动画通过一组动画类(Animation类)表示.使用少数几个熟悉设置相关信息,如开始值.结束值以及持续时间.这显然使得它们非常适合于XAML.不是很清晰的时:如何为特定的事件和属 ...
- 【WPF学习】第五十三章 动画类型回顾
创建动画面临的第一个挑战是为动画选择正确的属性.期望的结果(例如,在窗口中移动元素)与需要使用的属性(在这种情况下是Canvas.Left和Canvas.Top属性)之间的关系并不总是很直观.下面是一 ...
- 【WPF学习】第五十七章 使用代码创建故事板
在“[WPF学习]第五十章 故事板”中讨论了如何使用代码创建简单动画,以及如何使用XAML标记构建更复杂的故事板——具有多个动画以及播放控制功能.但有时采用更复杂的故事板例程,并在代码中实现全部复杂功 ...
随机推荐
- Codeforces Round #300 F - A Heap of Heaps (树状数组 OR 差分)
F. A Heap of Heaps time limit per test 3 seconds memory limit per test 512 megabytes input standard ...
- Node开发入门
介绍 Node.js采用google的V8虚拟机来解释和执行javascript,也就是允许脱离浏览器环境运行javascript代码. Hello World 婴儿说的第一个字一般是"妈& ...
- sourceTree初识
GUI for git|SourceTree|入门基础 目录 SourceTree简介 SourceTree基本使用 SourceTree&Git部分名词解释 相关连接推荐 一.SourceT ...
- thinkphp+datatables+ajax 大量数据服务器端查询
今天一白天全耗在这个问题上了,知乎2小时除外... 现在19:28分,记下来以备后查. 问题描述:从后台数据库查询人员信息,1w多条,使用一个好看的基于bootstrap的模板 Bootstrap-A ...
- 翻译brent ozar的sqlserver dba训练课程——第一章:建立数据库服务器清单
在公司里,走进销售副总裁的办公室,询问他手下有多少销售人员.不,我的意思是你并不要那么做,他们会问你销售工具为什么那么慢. 其实我的意思是,如果你能走进他的办公室问他这个问题.我敢打赌,他会马上回答 ...
- Python读取txt文件
Python读取txt文件,有两种方式: (1)逐行读取 data=open("data.txt") line=data.readline() while line: print ...
- php防sql注入、xss
php自带的几个防止sql注入的函数http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0318/12234.html addslashe ...
- java 定义mysql树形菜单
数据库中的数据如下: 1.首先在Dao中实现查找方法 public List<ProductType> findAllByRoot() { //定义集合,添加ProductType对象 L ...
- jquery中ajax的用法
Jquery中队Ajax操作进行了封装,可分为3层:1.最底层$.ajax(),2.第二层load().$.get().$.post()方法,3.第三层$.getScript()和$.getJSON( ...
- windows使用命令行杀进程
在windows有时使用任务管理器杀进程,一直杀不掉: 这个时候,可以使用命令行: 先使用tasklist 命令查看当前系统中的进程列表,然后针对你要杀的进程使用taskkill命令 如要杀nginx ...