c# - 使用 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
)。
有没有办法通知值发生了变化?
解决方案
有没有办法通知值发生了变化?
实现INotifyPropertyChanged并引发PropertyChanged
数据绑定UserDetailsLabel
属性的事件。
这是通知 WPF 源值已更改的方式。
例如,在多模块 Prism 应用程序的上下文中,您可以使用事件聚合器来引发每个视图模型处理的PropertyChanged
事件,方法是为需要在视图中刷新的所有数据绑定属性引发事件。
推荐阅读
- javascript - Nuxt 在无限加载时显示数据
- python - 如何查看用户在 ctypes 消息框中单击的内容
- perl - Perl printf 换行符
- angular - 在通知中发送数据时未收到通知 Firebase Cloud Messaging
- content-management-system - 可以使用表格的 CMS 看起来如何?
- sql - PostgreSQL 聚合函数与 group by
- c# - 我想知道如何从 Unity 3D(蒙皮网格渲染器)上的变形动画中获取 STL 文件
- mysql - Docker init 进程中的 MySQL 非常慢
- php - 带有西班牙口音的 PHP 字符串
- google-chrome - 下载所有 chrome 扩展程序以扫描它们