WPF 语言格式化文本控件

本章讲述正确添加语言资源的方式,以及一段语言资源的多种样式显示。

例如:“@Winter,你好!感谢已使用软件 800 天!

 

在添加如上多语言资源项时,“XX,你好!感谢已使用软件 X 天!”

那么,你是怎么添加语言资源的呢?

分别添加,“,你好!”、“感谢已使用软件”、“年”3个,再通过界面绑定动态变量 昵称和使用天数

假如你是按照如上添加语言资源的,那么问题来了,添加如上英文语言资源呢?是不是也分别添加单个资源,再拼凑绑定?

添加语言资源

正确的做法是,添加整个语言资源,{0},你好!感谢已使用软件 {1} 天!

原因:使用格式化的语言资源,那么将中文资源翻译成英文或者其它语言后,得到的译文符合原有的含义了。

不然,一段一段翻译后的文本拼接,得到的只会是,中式英文之类的。。。

语言格式化控件

在添加了语言资源后,如何在WPF界面显示呢?

简单的文本样式

只是简单的文本拼接,样式相同时,可以直接绑定动态变量值 - 昵称和使用年限,然后通过StringFormat或者Conveter去处理格式化文本。

如果只有一个动态变量,直接使用StringFormat处理即可。Text="{Binding Name,StringFormat={StaticResource TheFormatedText}}"

如果多个动态变量,可以使用多重绑定+Converter,实现文本格式化。

复杂的文本样式

复杂样式,例如:

文本+按钮

文本+超链接

加粗文本+普通文本+红色文本

以上,如何处理?

语言格式化控件实现

Demo显示效果:

WPF 语言格式化文本控件

 1. 添加一个继承TextBlock的用户控件ComplexTextBlock

1 /// <summary> 2 /// 解决复杂文本格式化样式的文本框控件 3 /// 如"已使用软件 {0} 天",天数需要标红加粗,或者用于【文本】【文字按钮】【文本】的组合 4 /// </summary> 5 public class ComplexTextBlock : TextBlock 6 { 7 8 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsyzx.html