首页 > 解决方案 > 使用 Prism 在 WPF 应用程序中使用 RESX 文件

问题描述

我正在使用 WPF/Prism 开展一个项目。该应用程序具有不同的模块,其中一个模块可以改变 resx 对象的文化。这工作正常,加载的每个模块都将显示翻译后的文本。

如果已经加载了任何模块,则不会更新文本。首先,我尝试了一种方法,x:Static但很快意识到静态值对我的问题没有帮助。现在我在我的视图模型中实现了一个 get-only 属性,它返回本地化的字符串。

public string UserDetailsLabel => Messages.UserDetailsLabel;

<TextBlock Text="{Binding UserDetailsLabel, Mode=OneWay, NotifyOnSourceUpdated=True}"/>

但是,我不知道在哪里告诉 WPF(或 Prism)文化已经改变并更新显示的值。更改区域性的模块将Culture属性设置为 on Messages(在 中生成Messages.Designer.cs)。

有没有办法通知值发生了变化?

标签: c#wpfresx

解决方案


有没有办法通知值发生了变化?

实现INotifyPropertyChanged并引发PropertyChanged数据绑定UserDetailsLabel属性的事件。

这是通知 WPF 源值已更改的方式。

例如,在多模块 Prism 应用程序的上下文中,您可以使用事件聚合器来引发每个视图模型处理的PropertyChanged事件,方法是为需要在视图中刷新的所有数据绑定属性引发事件。


推荐阅读