【问题标题】:WPF, localisation: reevaluating control valuesWPF,本地化:重新评估控制值
【发布时间】:2011-02-06 20:15:08
【问题描述】:

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

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

我非常喜欢这个解决方案:它非常容易实施,而且看起来非常灵活。然而,我有一个担忧。假设用户在运行时更改了语言环境。如何确保重新评估本地化属性以匹配新语言?

【问题讨论】:

    标签: wpf localization properties markup-extensions


    【解决方案1】:

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

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

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

    对于需要重新评估的不同属性,必须这样做。在 WPF 中围绕本地化有一个深入的article on MSDN,以供研究各种替代方案。

    【讨论】:

    • 你能告诉我更多关于它的信息吗?我应该在我本地化的每个控件上调用此方法吗?
    • 谢谢。我已经设法编写了带有绑定的小型概念验证应用程序(标记扩展最终会生成一个)。但是,我不能让 WPF 重新评估按钮的 Content 属性。 XAML 在这里 link 和 C# 源代码在这里 link。你能告诉我,我做错了什么吗?
    • @Sppok 也不在这里工作;打开了一个关于行为stackoverflow.com/questions/4926748/…的问题
    猜你喜欢
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2023-03-25
    • 2021-08-17
    相关资源
    最近更新 更多