c# - 如何编辑 resx 文件(资源键值)运行时 wpf c#

标签 c# wpf resources resx

我有多种语言的应用程序,它以几种语言运行。在我的应用程序中有用户可以更改的文本,但默认文本也需要翻译成不同的语言。这意味着如果用户想要编辑一些文本,则需要为他的语言编辑 resx 文件。

首先,我尝试使用 ResourceWriter 类,然后我的 resx 文件损坏了。我又创造了。

其次,我尝试使用 ResXResourceWriter 类,但找不到给我此功能(编辑某些属性的值)的好方法。

我认为只是像 xml 一样读取 resx 文件并进行编辑,但我不知道如何重新构建应用程序。

是否可以在运行时从应用程序编辑 resx 中的值。之后就可以像在 visual studio 中构建一样使用 c# 代码构建应用程序。

编辑 我不想将 resx 文件从 .en.resx 更改为其他格式 (.de.resx)。我想更改此 resx 文件中的值。例如,我有键 btnCont 和值 Click。例如,我想将 btnCont 更改为具有新值的 Click me。然后重新生成更改后的resx文件的dll。

多谢指教

最佳答案

也许有更好的方法来做到这一点(我很想了解它们),但是当我需要在运行时更改语言时,我所做的是将所有可本地化的字符串作为只读属性添加到我的 View 模型中。

    public string ImportString { get { return lang.Import; } }

然后我只是从 XAML 添加到这个字符串的绑定(bind),并且在更改 UI 区域性之后我在我的 View 模型的所有字符串属性上调用 OnPropertyChanged。

    protected void NotifyAllPropertiesChanged<T>()
    {
        foreach (var p in this.GetType().GetProperties())
            if (p.PropertyType == typeof(T))
                OnPropertyChanged(p.Name);
    }

关于c# - 如何编辑 resx 文件(资源键值)运行时 wpf c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35014095/

相关文章:

c# - 编译 .NET 程序集时,名称中包含 x__ 的类是什么?

c# - 通过完整路径和查询名称查询 TFS 存储/保存的查询(不在 'My Queries' 或 'Shared Queries' 中的查询)

c# - 为复选框使用 "if"语句的替代方案

c# - 双向绑定(bind)不起作用

android - Android 上的可下载主题

c# - 在 WCF 中缓存?

WPF 模板/样式问题

c# - AvalonDock 2.0 增加 handle 尺寸

c# - 项目间资源共享策略

删除多行后的Oracle 10g表大小