我正在对WPF中的本地化方法进行一项小型研究。我听说了标记扩展的想法:
<Label Content="{local:Translate {-- label ID here --}}" />
我非常喜欢这个解决方案:它非常容易实现,并且看起来非常灵活。不过,我有一个问题。我们假设,该用户更改了运行时中的语言环境。如何确保将重新评估本地化属性以匹配新语言?
答案 0 :(得分:0)
您需要致电DependencyObject.InvalidateProperty。请记住,如果您绑定到实现INotifyPropertyChanged
的对象,他们将通过更改基础数据来重新评估。
DependencyObject.InvalidateProperty
可以在给定DependencyProperty
上调用,例如Label.Content
。
Label label = new Label();
label.InvalidateProperty(ContentProperty);
必须对需要重新评估的不同属性进行此操作。 WPF中的本地化有一个深度article on MSDN,用于不同的替代方案以及应该进行调查。