我在外部类库中获得了项目的本地化,因为我只需要一个Lang.csv
文件用于翻译。
为此,我得到了一个静态实例Translator.TI
,在命名空间TimeTracking.Lang
中有一个索引器,而我的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>
问题:这可能吗?如何?如果没有:我可以通过使用针对静态单例的类属性来执行此操作吗?
答案 0 :(得分:3)
无法使用{x:Static}
扩展名的索引器。您可以使用Binding
实现此目的,例如:
Title="{Binding Source={x:Static p:Translator.TI}, Path='[TimeTracking]'}"
在INotifyPropertyChanged
类中实现Translator
接口也是一个好主意,以避免绑定内存泄漏并启用属性更改通知。