WPF中使用TextBlock显示长字符串的处理方法

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中使用TextBlock显示长字符串的处理方法相关的知识,希望对你有一定的参考价值。

原文:WPF中使用TextBlock显示长字符串的处理方法

在WPF中,有时候要显示长字符串,需要用到换行或者截短的情况,方法如下:

  • 换行
  1. 可以使用<LineBreak/>标记换行;
  2. 可以用TextWrapping属性(如非特殊,推荐用这种方式,自动、自适应)。它可以有NoWrap(不换行。缺省值)、Wrap(换行)、WrapWithOverflow(换行但允许超出文本块的宽度)。WrapWithOverflow在换行的算法没办法确定如何正确换行(比如某个单词超长、换不换都超出宽度)时,允许行超出块的宽度。
    <Grid>
        <TextBlock Foreground="Red">
            This is a sample for LineBreak:<LineBreak/>
            This is line 1;<LineBreak/>
            This is line 2.
        </TextBlock>

        <TextBlock Foreground="Green" TextWrapping="Wrap" Width="200">
            This is a TextBlock control with automatically wrapped text by using TextWrapping property.
        </TextBlock>
        
    </Grid>
技术图片
上面两种换行方式的显示效果
  • 自动截短文本
    有时候我们在显示一个长文本的时候,希望它超出文本块长度的时候省略一部分显示,那么要用到属性TextTriming来截短文本了。
    <Grid>
        <TextBlock Foreground="Black" TextTrimming="None" TextWrapping="NoWrap" Width="200">
            This is a TextBlock control with automatic trimming.
        </TextBlock>

        <TextBlock Foreground="Red" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" Width="200" Margin="0,20">
            This is a TextBlock control with automatic trimming.
        </TextBlock>
    
        <TextBlock Foreground="Blue"  TextTrimming="WordEllipsis" TextWrapping="NoWrap" Width="200" Margin="0,40">
            This is a TextBlock control with automatic trimming.
        </TextBlock>

    </Grid>
技术图片
三种文本截短方式效果对比
  1. None不截短;
  2. CharacterEllipsis不管单词,在以字符为单位进行截短,比如上例红色句子中automatic被截到只剩下一个a;
  3. WordEllipsis以单词为整体进行截短,蓝色句子中automatic整体被截掉了。

达叔傻乐(darwin.zuo@163.com)


以上是关于WPF中使用TextBlock显示长字符串的处理方法的主要内容,如果未能解决你的问题,请参考以下文章

wpf textblock 长文本滚动

WPF中让TextBlock每一个字符显示不同的颜色

WPF中让TextBlock每一个字符显示不同的颜色

WPF中让TextBlock每一个字符显示不同的颜色

WPF控件TextBlock中文字自动换行

WPF TextBlock 仅在所有工作完成后才显示所有日志消息