原文: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换行的更多相关文章

  1. WPF学习笔记二 依赖属性实现原理及性能分析

    在这里讨论依赖属性实现原理,目的只是学习WPF是怎么设计依赖属性的,同时更好的使用依赖属性. 首先我们来思考一个简单的问题:我们希望能验证属性的值是否有效,属性变更时进行自己的处理.回顾一下.net的 ...

  2. WPF学习(二)布局与菜单、工具栏

    布局 //表格①Grid//3列 4行的表格   <Grid>    <Grid.ColumDefinitions>             <ColumnDefinti ...

  3. WPF学习(二) - 绑定

    绑定,这个看起来很神奇的东西,于我这种喜欢刨根儿的人而言,理解起来非常困难.    WPF绑定的核心思想是:数据层属性值的改变,能反应给展示层,反之亦然,并且这个响应的过程能被分离出来. 传统Winf ...

  4. WPF学习笔记二之依赖属性

    1.快捷生成依赖属性:propdp然后按两次tab键 2.应用场景:自定义控件 什么是依赖属性:依赖属性自己没有值,通过依赖别人(如Binding)来获得值. 依赖属性为什么会出现:控件常用字段有限, ...

  5. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  6. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  7. 【WPF学习】第五十章 故事板

    正如上一章介绍,WPF动画通过一组动画类(Animation类)表示.使用少数几个熟悉设置相关信息,如开始值.结束值以及持续时间.这显然使得它们非常适合于XAML.不是很清晰的时:如何为特定的事件和属 ...

  8. 【WPF学习】第五十三章 动画类型回顾

    创建动画面临的第一个挑战是为动画选择正确的属性.期望的结果(例如,在窗口中移动元素)与需要使用的属性(在这种情况下是Canvas.Left和Canvas.Top属性)之间的关系并不总是很直观.下面是一 ...

  9. 【WPF学习】第五十七章 使用代码创建故事板

    在“[WPF学习]第五十章 故事板”中讨论了如何使用代码创建简单动画,以及如何使用XAML标记构建更复杂的故事板——具有多个动画以及播放控制功能.但有时采用更复杂的故事板例程,并在代码中实现全部复杂功 ...

随机推荐

  1. 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 ...

  2. Node开发入门

    介绍 Node.js采用google的V8虚拟机来解释和执行javascript,也就是允许脱离浏览器环境运行javascript代码. Hello World 婴儿说的第一个字一般是"妈& ...

  3. sourceTree初识

    GUI for git|SourceTree|入门基础 目录 SourceTree简介 SourceTree基本使用 SourceTree&Git部分名词解释 相关连接推荐 一.SourceT ...

  4. thinkphp+datatables+ajax 大量数据服务器端查询

    今天一白天全耗在这个问题上了,知乎2小时除外... 现在19:28分,记下来以备后查. 问题描述:从后台数据库查询人员信息,1w多条,使用一个好看的基于bootstrap的模板 Bootstrap-A ...

  5. 翻译brent ozar的sqlserver dba训练课程——第一章:建立数据库服务器清单

    在公司里,走进销售副总裁的办公室,询问他手下有多少销售人员.不,我的意思是你并不要那么做,他们会问你销售工具为什么那么慢.  其实我的意思是,如果你能走进他的办公室问他这个问题.我敢打赌,他会马上回答 ...

  6. Python读取txt文件

    Python读取txt文件,有两种方式: (1)逐行读取 data=open("data.txt") line=data.readline() while line: print ...

  7. php防sql注入、xss

    php自带的几个防止sql注入的函数http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0318/12234.html addslashe ...

  8. java 定义mysql树形菜单

    数据库中的数据如下: 1.首先在Dao中实现查找方法 public List<ProductType> findAllByRoot() { //定义集合,添加ProductType对象 L ...

  9. jquery中ajax的用法

    Jquery中队Ajax操作进行了封装,可分为3层:1.最底层$.ajax(),2.第二层load().$.get().$.post()方法,3.第三层$.getScript()和$.getJSON( ...

  10. windows使用命令行杀进程

    在windows有时使用任务管理器杀进程,一直杀不掉: 这个时候,可以使用命令行: 先使用tasklist 命令查看当前系统中的进程列表,然后针对你要杀的进程使用taskkill命令 如要杀nginx ...