WPF,本地化:重新评估控制值

时间:2011-02-06 20:15:08

标签: wpf localization properties markup-extensions

我正在对WPF中的本地化方法进行一项小型研究。我听说了标记扩展的想法:

<Label Content="{local:Translate {-- label ID here --}}" />

我非常喜欢这个解决方案:它非常容易实现,并且看起来非常灵活。不过,我有一个问题。我们假设,该用户更改了运行时中的语言环境。如何确保将重新评估本地化属性以匹配新语言?

1 个答案:

答案 0 :(得分:0)

您需要致电DependencyObject.InvalidateProperty。请记住,如果您绑定到实现INotifyPropertyChanged的对象,他们将通过更改基础数据来重新评估。

DependencyObject.InvalidateProperty可以在给定DependencyProperty上调用,例如Label.Content

Label label = new Label();
label.InvalidateProperty(ContentProperty);

必须对需要重新评估的不同属性进行此操作。 WPF中的本地化有一个深度article on MSDN,用于不同的替代方案以及应该进行调查。