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整体被截掉了。

达叔傻乐([email protected])

原文地址:https://www.cnblogs.com/lonelyxmas/p/12114628.html

时间: 2024-10-25 07:34:18

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

WPF中的TextBlock处理长字符串

Xaml: <StackPanel> <TextBlock Margin="10" Foreground="Red"> This is a TextBlock control<LineBreak /> with multiple lines of text. </TextBlock> <TextBlock Margin="10" TextTrimming="CharacterElli

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

原文:WPF中让TextBlock每一个字符显示不同的颜色 XAML代码: <TextBlock x:Name="tb"> <Run Foreground="Red">R</Run> <Run Foreground="Green">G</Run> <Run Foreground="Blue">B</Run> <Run Text="

WPF中使用Hashtable剔除重复字符串(比如电话号码)

原文:WPF中使用Hashtable剔除重复字符串(比如电话号码) 本文中的输入框中的字符串是逗号隔开的,你可以换成其他特别的字符串. 本篇中的亮点:1. 里面有一个玻璃样式按钮,用XAML制作2. WPF下TextBox允许多行文本的设置3. 使用Hashtable剔除重复字符串(比如电话号码) 运行时的样子:(为了保护隐私,做了虚化及其他处理) WPF下TextBox允许多行文本的设置:需要:(1)将TextWrapping设为"Wrap"(2)将AcceptsReturn设为&q

JSP简单练习-省略显示长字符串

<%@ page contentType="text/html; charset=gb2312" %> <!-- JSP指令标签 --> <%@ page import="java.util.*" %> <!-- JSP指令标签 --> <html> <head> <title>长字符串截取示例</title> </head> <body> <

WPF编程 ,TextBlock 显示百分数值的一种简单方法。

原文:WPF编程 ,TextBlock 显示百分数值的一种简单方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/86524376 此处是绑定了另一控件的值,也可用于数据绑定的情况,最后格式化一句是关键,? <TextBlock Text="{Binding Value,Mode=OneWay,ElementName=pro2,StringFormat={}{0:p2}}" /&

WPF中实现先登录后启动主程序的方法

[转载] http://blog.csdn.net/swarb/article/details/17301167 WPF中实现先登录后启动主程序的方法 我觉得先登录后启动应用主程序是一个很经典的问题,基本上如果要写一个应用程序都会用到这个的小环节.我在这个问题上挣扎了大半天才找到解决方案,我的实现方法我觉得有点不正宗,如果有哪位高手知道更好的方法欢迎留言指导!! 首先来说一下传统C#在WinForm中的实现方法,基本上是在Main函数中根据第一个启动窗口的DialogResult来判断是否实例第

WPF中Listbox/ListView 横向展示/滑动内容的方法

<ListView Name="BoardListView" ScrollViewer.VerticalScrollBarVisibility="Hidden" Height="100" VerticalAlignment="Bottom"> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapPanel/> </ItemsPan

[转]在WPF中区别TextBlock和Label

TextBlock和Label都是用来显示少量数据的.好多文章对Label存在的描述都是它允许使用"快速获取"."快速获取"就是允许你用Alt加上其它的按键快速和UI界面的某个控件交互,比如你可以用ALT加上O键来点击一个OK按钮. TextBlock直接继承于FrameworkElement,而Label继承于ContentControl.这样看来,Label可以做这样的事情: 1.可以定义一个控件模板(通过Template属性) 2.可以显示出string以外的

VCCListCtrl显示长字符串自定义类

1.h 1 #pragma once 2 3 4 // CMyListCtrl 5 6 class CMyListCtrl : public CListCtrl 7 { 8 DECLARE_DYNAMIC(CMyListCtrl) 9 10 public: 11 CMyListCtrl(); 12 virtual ~CMyListCtrl(); 13 14 CString GetItemText(int nItem, int nSubItem) const; 15 void DrawItem(L