我正在将应用程序从Windows Phone 8.1移植到UWP,我遇到从资源获取字符串的问题。在WP 8.1中,我可以写一下字符串:
Text="{Binding Path=LocalizedResources.lDownloadStatus , Source={StaticResource LocalizedStrings}}"
UWP中是否有类似的解决方案或者我必须设置x:UID,然后在资源文件集中设置例如:“Button.Content | SampleContent”?
答案 0 :(得分:2)
你应该在你的项目中创建文件夹“Strings”,因为法语在其中创建另一个具有国家LCID名称的文件夹(法国的fr-fr)。并在那里创建resource.resw文件。
如果要在TextBlock.Text中使用值,请将.resw文件中的字段命名为“Hello.Text”,并为其指定值“Bonjour”。
转到TextBlock并设置x:Uid =“Hello”。
使用ApplicationLanguages.PrimaryLanguageOverride =“fr-fr”更改您的语言。
答案 1 :(得分:0)
使用x:uid加载资源字符串,或者使用ResourceManager从后端获取资源字符串。 以下是MSDN的示例:How to create a localization UWP App。
希望它有所帮助!
答案 2 :(得分:0)
我已经使用CustomResources获得了非常好的经验。
只需在UI项目中的任何位置创建一个新类,该类继承自CustomXamlResourceLoader并实现以下方法:
protected override object GetResource(string resourceId, string objectType, string propertyName, string propertyType)
{
var parts = resourceId.Split('|');
if (parts.Length != 2)
throw new ArgumentException();
return ResourceLoader.GetForViewIndependentUse(parts[0]).GetString(split[1]);
}
然后你创建资源文件,我曾经把它命名为我所在的页面,即" MainPage.resw"。
就是这样,现在您可以开始使用XAML中的资源了:
Text="{CustomResource MainPage|MyResourceKey}"
当然,分离器可以是你想要的任何东西,它不仅限于管道。只需确保在ResourceLoader和XAML中使用相同的分隔符。
您无法在Designer中获得预览,但最大的好处是您可以拆分资源文件,而不必将所有内容合并为一个。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/windows/uwp/xaml-platform/customresource-markup-extension。