设计时的 UWP 资源字符串 (.resw)
Posted
技术标签:
【中文标题】设计时的 UWP 资源字符串 (.resw)【英文标题】:UWP resource strings at design time (.resw) 【发布时间】:2018-01-25 04:00:15 【问题描述】:我按照https://docs.microsoft.com/en-us/windows/uwp/globalizing/put-ui-strings-into-resources 的说明创建了一个.resw 文件。虽然本地化在运行时运行良好,但在设计时不显示任何文本。
目前唯一提出的解决方案似乎只适用于 Windows 8.1 应用程序:Windows store app ResourceLoader at design time
【问题讨论】:
【参考方案1】:您提到的解决方案New Method
也适用于UWP。并且更推荐在设计时使用Data Binding。
以下类的工作方式类似于 .resw 文件 reader
。如果您发送 key 参数,它将返回 key 的值。
public class LocalizedStrings
public string this[string key]
get
return ResourceLoader.GetForViewIndependentUse().GetString(key);
在使用绑定之前,需要在 App.xaml 文件中实例化reader
。
<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
方法。
对我来说,这会导致显示“项目”而不是实际值。这比根本不显示文本要好,但是由于智能感知对路径属性没有帮助,因此很容易发生拼写错误,我希望在设计时看到这一点。有解决办法吗?以上是关于设计时的 UWP 资源字符串 (.resw)的主要内容,如果未能解决你的问题,请参考以下文章