中型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是多语言资源文件所在的命名空间。
是不是很方便?^-^
转载请注明出处