设计时的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内容将显示在那里的设计师。

enter image description here

+0

这对我来说已经奏效了,谢谢!我应该使用'Binding'方法还是'x:Uid'?我宁愿不使用两者都没有指定所有的东西两次(因为这似乎是一个很好的错误来源)。另外,我已经看到,在运行时''ResourceLoader'仍然是从'Binding'中调用的,即使'Text'属性之后被'x:Uid'机制覆盖。 –

+0

如果您想在设计时使用资源字符串,最好使用上面的'Binding'方法。 –

+0

对我而言,显示的是“项目”而不是实际值。这比根本没有显示的文本要好,但是因为intelliSense不能帮助路径属性,所以错字很容易发生,我希望在designTime看到。有没有解决方案? – Hannes