欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

中型WPF客户端开发项目总结(3.3.3) - 带修饰符的多语言术语

程序员文章站 2022-05-18 19:08:39
标题可能有点不好理解,我解释一下: 术语指的是常用词汇,比如用户(User)、名称(Name)、邮箱(Email)等。 带修饰符指的是UI上需要呈现`用户:`、`名称:`、`邮箱:`等这些情况。 由于之前已经定义过了用户此类词汇的多语言,如果还需要再对它们带冒号的版本定义一次多语言,这个过程会非常冗 ......

标题可能有点不好理解,我解释一下:

术语指的是常用词汇,比如用户(user)、名称(name)、邮箱(email)等。

带修饰符指的是ui上需要呈现`用户:`、`名称:`、`邮箱:`等这些情况。

由于之前已经定义过了用户此类词汇的多语言,如果还需要再对它们带冒号的版本定义一次多语言,这个过程会非常冗余,而且容易出错。如何解决?

1. 定义新的ivalueconverter

1 public class stringexpandcolonconverter : ivalueconverter
2 {
3         public object convert(object value, type targettype, object parameter, cultureinfo culture) => $"{value}{colonstring}";
4         public object convertback(object value, type targettype, object parameter, cultureinfo culture) => throw new notimplementedexception();
5 }

上面的`colonstring`是冒号的多语言变量。

2. 扩展binding

1 public class stringcolonbinding : binding
2 {
3         private static readonly ivalueconverter _converter = new stringexpandcolonconverter();
4         public stringcolonbinding()
5         {
6             converter = _converter;
7             mode = bindingmode.onetime;
8         }
9 }

3. 使用

<textblock text="{mk:stringcolonbinding source={x:static res:resourcecommon.sitestring}}" />

mk是binding扩展所在的命名空间,res是多语言资源文件所在的命名空间。

中型WPF客户端开发项目总结(3.3.3) - 带修饰符的多语言术语

 

 是不是很方便?^-^