WPF - 从静态字典单例中获取文本

WPF - Get text from static Dictionary Singleton

我在外部 class 库中获得了项目的本地化,因为我只需要一个 Lang.csv 文件来进行翻译。

为此,我在命名空间 TimeTracking.Lang 中获得了一个带有索引器的静态实例 Translator.TI,而我的 WPF 应用程序位于主项目的命名空间 TimeTracking.View 中(所以不同的项目,但相同的基本命名空间)。

namespace TimeTracking.Lang
{
    public class Translator
    {
        public static readonly Translator TI = new Translator();
        private readonly Dictionary<string, Translation> _translations;

        public string this[string key]
        {
            get { ... }
        }

        ...
    }
}

现在我想将我的翻译从这个静态单例实例加载到视图中。

<Window
    ...
    xmlns:p="clr-namespace:TimeTracking.Lang;assembly=TimeTrackingShared"
    Title="{x:Static p.Translator.TI[TimeTracking]}"
>
    ...
</Window>

问题:这可能吗?如何实现?如果不是:我可以通过使用针对静态单例的 class 属性 来做到这一点吗?

无法使用扩展名为 {x:Static} 的索引器。您可以使用 Binding 实现此目的,例如:

Title="{Binding Source={x:Static p:Translator.TI}, Path='[TimeTracking]'}"

在您的 Translator class 中实现 INotifyPropertyChanged 接口也是一个好主意,以避免绑定内存泄漏并启用 属性 更改通知。