中型WPF客户端开发项目总结(3.3.3) - 带修饰符的多语言术语
程序员文章站
2022-12-09 08:10:34
标题可能有点不好理解,我解释一下: 术语指的是常用词汇,比如用户(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是多语言资源文件所在的命名空间。
是不是很方便?^-^