1

当我们在 UWP 中有多种语言(Xliff 和 Resx)时。在运行时,windows 决定加载或手动加载哪种语言,我们也可以使用 Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride 进行更改。

我想知道资源在哪里加载,在哪个类/对象中?我想知道在加载 resx 后是否可以更改内存/对象本身中特定资源 ID 的内容。以便在屏幕上显示特定资源 id 的修改内容。

我问是因为 resx 文件也被编译,之后无法在运行时更改/更新 resx 文件。所以我正在寻找替代方法。

问候

4

1 回答 1

1

更新:

我不得不说 UWP 没有可以更改资源文件中的值的 API。您需要手动修改这些值并使用新版本打包您的应用程序。然后您可以在其他设备上更新您的应用程序。我建议您在资源文件中为不同的场景预先定义更多的字符串。因此,如果您确实需要这样做,您可以使用ResourceLoader 类切换到不同的值。

老回复: 如果你只是想用另一个值来替换你已经分配给一个控件的旧值,例如,有一个TextBlock对象已经使用了Hello字符串(Hello是资源文件中的名称,而不是值)从资源文件作为文本。现在您想使用另一个资源字符串FareWell来替换该Hello字符串。如果这是您想要的,您可以使用ResourceLoader 类来实现这一点。

您需要在代码隐藏中执行的操作如下所示:

var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();
//the myXAMLTextBlockElement text uses x:uid= Hello in the xaml
this.myXAMLTextBlockElement.Text = resourceLoader.GetString("Farewell");
于 2021-10-19T03:25:07.013 回答