【Win10】让 TextBlock 按字符换行
原文:
【Win10】让 TextBlock 按字符换行
要想将 TextBlock 里的文本自动换行的话,只需要设置 TextWrapping 属性为 Wrap 即可。 但是 TextWrapping 是尽可能根据空白字符来换行的,因此,就有可能出现下面这种状况: 每一行的尾部会出现长短不一的空白。 在 UI 设计上,有一点建议,那就是同一级的内容是要对齐的。 而现在上面这种情况就有可能误导用户分成三段信息: 而且这样的显示,也不美观。 ? 因此,我们不禁想问,为什么要按照空白字符来换行,而不是按字符来换行呢? 既然微软没有提供这个功能,那我们只能自己动手实现。 ? 在字符当中,有一些特殊的字符,例如换行符、制表符这些的,当中有一个更为特殊的字符,叫做零宽空格:https://en.wikipedia.org/wiki/Zero-width_space 既然它是一个空格,那么它肯定是可以对 TextWrapping 起作用的了。 那么只需要在文本的每一个字符间插入这么一个零宽字符的话,我们需要的效果就应该能实现了。 编写一个 CharacterWrapConverter: public class CharacterWrapConverter : IValueConverter { public object Convert(object value,Type targetType,object parameter,string language) { var str = (string)value; return string.Join("u200B",str.ToCharArray()); } public object ConvertBack(object value,string language) { throw new NotImplementedException(); } } 效果: 那么,现在你肯定会认为这段文本是一个整体,而不是像前面那样看上去分成了三块。而且看上去美观多了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- dos生成目录树
- 从WinJS应用程序打开PDF文件
- 脚本 – 在powerhell中自动确认删除
- 如何在Qt中设置按钮的背景颜色后保留Windows Aero主题?
- ms-solver-foundation – Microsoft Solver Foundation是否
- Windows-8 – 可以在Windows 10/Windows 8/WinRT中唯一标识
- 带有资源字典的wpf类库
- windows-server-2008 – 您当前的安全设置不允许下载此文件
- windows-server-2008 – 什么是Windows等同于Puppet / chef
- windows-vista – 如何诊断关机时挂起的Windows PC?