设计时的UWP资源字符串(.resw)
问题描述:
我已按照https://docs.microsoft.com/en-us/windows/uwp/globalizing/put-ui-strings-into-resources上的说明创建了一个.resw文件。虽然本地化在运行时工作正常,但在设计时不会显示文本。设计时的UWP资源字符串(.resw)
到目前为止提出的唯一的解决办法似乎只能工作在Windows 8.1的应用程序:Windows store app ResourceLoader at design time
答
你提到也UWP作品的解决方案New Method
。建议在设计时使用Data Binding。
以下班级的工作方式类似.resw文件reader
。如果您发送密钥参数,它将返回密钥的值。
public class LocalizedStrings
{
public string this[string key]
{
get
{
return ResourceLoader.GetForViewIndependentUse().GetString(key);
}
}
}
使用绑定之前,您需要实例化reader
在App.xaml文件。
<Application.Resources>
<ResourceDictionary>
<local:LocalizedStrings x:Key="Localized"/>
</ResourceDictionary>
</Application.Resources>
Resources.resw
<data name="Title" xml:space="preserve">
<value>ResTitleTest</value>
</data>
使用
<TextBlock Text="{Binding Source={StaticResource Localized}, Path=[Title]}" />
注意:只有建立后,Textblock
内容将显示在那里的设计师。
这对我来说已经奏效了,谢谢!我应该使用'Binding'方法还是'x:Uid'?我宁愿不使用两者都没有指定所有的东西两次(因为这似乎是一个很好的错误来源)。另外,我已经看到,在运行时''ResourceLoader'仍然是从'Binding'中调用的,即使'Text'属性之后被'x:Uid'机制覆盖。 –
如果您想在设计时使用资源字符串,最好使用上面的'Binding'方法。 –
对我而言,显示的是“项目”而不是实际值。这比根本没有显示的文本要好,但是因为intelliSense不能帮助路径属性,所以错字很容易发生,我希望在designTime看到。有没有解决方案? – Hannes