将 .resw 文件中的字符串与 XAML 中的 ReswFileCodeGenerator 绑定

本文关键字:XAML 中的 ReswFileCodeGenerator 绑定 字符串 resw 文件 | 更新日期: 2023-09-27 18:35:54

我尝试使用多语言应用程序工具包本地化我的Windows通用应用程序。由于无法直接从 XAML 中的 .resw 文件绑定字符串,因此我使用了 ReswFileCodeGenerator 工具。它在代码隐藏中效果很好,但在 XAML 中我无法做到这一点。

在Windows Phone 8.0中,我可以使用:

Text="{Binding Path=LocalizedResources.StringName, Source={StaticResource Strings}}"

在Windows(Phone)8.1中使用ReswFileGenerator工具是否有类似的方法?

将 .resw 文件中的字符串与 XAML 中的 ReswFileCodeGenerator 绑定

我仍然建议你按照Depechie已经建议的那样做:使用x:Uid属性。

如果需要从代码中获取本地化字符串,只需将资源名称中的.替换为 / 即可。因此,在 XAML 中,你将编写:

<TextBlock x:Uid="appString" />

在代码中,您将使用:

var resourceLoader = new ResourceLoader();
var localizedText = resourceLoader.GetString("appString/Text");

在 wp8.1 中使用 .resw 文件进行资源转换时,需要在 xaml 控件上使用 x:Uid 属性!

喜欢<TextBlock x:Uid="FieldKey" />

细节在这里提到...

我已经编写了一些东西来帮助我解决这个问题。它可能并不完美,但对我来说效果很好。下面是指向帮助程序的链接。您构建它并将.exe文件放在一些易于访问的文件夹中。

在包含资源的项目中,您将预构建操作设置为如下所示的内容(您只需要更改"path''to''ResourcesHelper.exe"部分):

call "path'to'ResourcesHelper.exe" "$(TargetName)" "$(ProjectDir)'" "$(RootNameSpace)" "universal"

此外,主要资源必须位于项目的 Resources/en-US 文件夹中(不过,您可以在代码中更改它)。

这样,当您生成项目时,它将生成一个名为 LocalizedString 的文件.cs类似于为 .resx 文件生成的文件。它包含一些额外的属性,称为LC(用于小写),UC(用于大写)和UCF(用于大写优先),它们返回该大小写中的字符串。我希望你会发现它有用。:)

注意:该工具不适用于其他人,所以我实际上只是编写了我需要的代码,因此它可能无法完美运行。