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

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

术语指的是常用词汇,比如用户(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是多语言资源文件所在的命名空间。

 

 是不是很方便?^-^

posted @ 2020-04-13 22:46  HI,D  阅读(458)  评论(0编辑  收藏  举报