zoukankan      html  css  js  c++  java
  • 中型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是多语言资源文件所在的命名空间。

     是不是很方便?^-^

  • 相关阅读:
    辗转相除法
    并查集(详)
    LCA 最近公共祖先
    RMQ ST表 静态区间最大值
    manacher
    题解 CF33B String Problem
    Linux 下对拍程序
    CSP 考试注意事项
    题解 P4688 [Ynoi2016]掉进兔子洞
    CSP 2020 游记
  • 原文地址:https://www.cnblogs.com/godlessspirit/p/12694674.html
Copyright © 2011-2022 走看看