原文: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. IIS 403.14 - Forbidden错误解决方法

    HTTP 错误 403.14 - ForbiddenWeb 服务器被配置为不列出此目录的内容. 解决方法如下: 打开IIS的”处理程序映射设置“,在右边的操作栏下有 ”添加脚本映射“请求路径:*可执行 ...

  2. HDU5140---Hun Gui Wei Company (主席树)

    主席树太强大了,,如果仅仅用来求第k大就太屈才了..貌似和HDU4605差不多,那个是在图上根据点的顺序建立主席树,这个是根据年龄大小 或者等级高低建立主席树. 题意 大致就是一个二维区间的求和,但是 ...

  3. Cplus

    1,factorials[i] = i * factorials[i - 1]; #include <iostream>using namespace std; const int ArS ...

  4. 给大家推荐一款代替Visio的在线作图工具ProcessOn

    过去作图的时候一直都是在用visio,每一次换了电脑使用都要重新安装,这大家都知道,最头疼的就是激活问题,曾经因为激活问题我“找遍了”正个互联网,最后还没找到...从08年开始到现在,visio用了这 ...

  5. ELT工具Kettle之CDC(Change Data Capture)实现实例

    ETL过程的第一步就是从不同的数据源抽取数据并把数据存储在数据的缓存区.这个过程的主要挑战就是初始加载数据量大和比较慢的网络延迟.在初始加载完成之后,不能再把所有数据重新加载一遍,我们需要的只是变化的 ...

  6. Problem with generating association inside dbml file for LINQ to SQL

    Question: I have created a dbml file in my project, and then dragged two tables from a database into ...

  7. Java设计模式——Observer(观察者)模式

    在多个对象之间建立一对多的关系,以便当一个对象状态改变的时候.其它全部依赖于这个对象的对象都能得到通知,并被自己主动更新. 适用情况: 当一个抽象模型有两个方面,当中一个方面依赖于还有一方面. 将这二 ...

  8. android 删除的警告对话框

    在图形界面之中,对话框也是人机交互的一种重要的形式,程序可以通过对话框对用户进行一些信息的提示,而 用户也可以通过对话框和程序进行一些简单的交互操作. 在Android的开发之中,所有的对话框都是从a ...

  9. [Angular 2] Async Http

    Async Pipe: The Asynce pipe receive a Promise or Observable as  input and subscribes to the input, e ...

  10. [React] React Router: Nested Routes

    Since react-router routes are components, creating nested routes is as simple as making one route a ...