【问题标题】:UWP resource strings at design time (.resw)设计时的 UWP 资源字符串 (.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

【问题讨论】:

    标签: uwp uwp-xaml


    【解决方案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方法。
    • 对我来说,这会导致显示“项目”而不是实际值。这比根本不显示文本要好,但是由于智能感知对路径属性没有帮助,因此很容易发生拼写错误,我希望在设计时看到这一点。有解决办法吗?
    猜你喜欢
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多