设计时的 Windows 应用商店应用 ResourceLoader

2024-03-30

我已经开始为 Windows 8.1 创建 Windows 应用商店应用程序,现在遇到了有关本地化的问题。

我想在设计时显示 .resw 文件中的字符串资源,但每次尝试都失败了,即使它在运行时有效。

使用 x:Uid 属性时,我仍然必须提供 Text 属性(即对于 TextBlock),并且我不喜欢将文本写入两次。

我还尝试为视图模型上的字符串创建一个属性:

public string Title
{
    get { return ResourceLoader.GetForCurrentView("Strings").GetString("MainView_Title"); }
}

这在运行时有效,但在设计时它是空白的。

所以问题是,有没有办法在 XAML 设计器中显示 .resw 文件中的资源?

更具体地说,ResourceManager 类是否允许在设计时读取 .resw 文件?

感谢您的帮助, 卢卡斯


旧方法

因此,您可以做几件事。

第一个(也是最简单的,因为您正在使用x:Uid已经)只是将文本提供到文本字段中。这x:Uid相关值将覆盖其中的任何内容。

<TextBlock Text="MyText" x:Uid="MainView_Title"/>

第二种方法是使用您已有的属性,然后检查应用程序是否处于设计时间(通过几种不同的方法),如果是,则返回一个常量值,如果不是,则返回资源。

public string Title
{
     if(ViewModelBase.IsInDesignTimeStatic) //Mvvm Light's easy accessor
         return "My Text";
     return ResourceLoader.GetForCurrentView("Strings").GetString("MainView_Title");
}

希望这对您有所帮助,祝您编码愉快!

编辑:至少从 Windows 8.1 开始,似乎有一种新方法可以做到这一点。

新方法

  • 创建一个引用 a 的类ResourceLoader(类似于上面描述的属性)。
  • 创建一个索引属性访问器,它接受字符串键并从ResourceLoader.

    public class LocalizedStrings
    {
        public string this[string key]
        {
            get
            {
                return App.ResourceLoader.GetForViewIndependentUse().GetString(key);
            }
        }
    }
    
  • In your App.xaml,定义一个StaticResource这种类型的。

    <Application.Resources>
        <ResourceDictionary>
            <common:LocalizedStrings x:Key="Localized"/>
        </ResourceDictionary>
    </Application.Resources>
    

现在,当您想使用进入钥匙访问您的财产时MainView_Title, 用这个。它更冗长,但它应该在设计器和应用程序本身中进行翻译。

<TextBlock Text="{Binding Source={StaticResource Localized}, Path=[MainView_Title]}" />

如果您愿意,可以将其打乱以使其更具可读性,例如:

<TextBlock Text="{Binding [MainView_Title], Source={StaticResource Localized}}" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计时的 Windows 应用商店应用 ResourceLoader 的相关文章

随机推荐

  • 在 Play 应用程序中启动时调用服务

    我有一个 Play 2 4 应用程序 尝试在应用程序启动时启动每周任务 当前的建议是在急切注入的类的构造函数中执行此操作 Guice 但是 我的任务需要访问服务 如何将该服务注入到我的任务中而不出现错误 Error injecting co
  • iOS 10 问题:即使设置了 ContentSize,UIScrollView 也不滚动

    UPDATE 这是 iOS 10 的问题 这在 iOS 9 中仍然像以前一样有效 当你设置时它就会起作用contentSize在主线程上并将此代码放入 void viewDidLayoutSubviews void viewDidLayou
  • Excel COUNTIF 特殊字符

    是否可以计算整列中的特定特殊字符 我正在尝试数所有逗号 在一个专栏中 这就是我正在使用的 COUNTIF D3 D45 问题是这仅计算单元格中单独的逗号 如果我在单元格中添加任何其他内容 在逗号之前或之后 则不会计数 我正在计数的细胞示例
  • Datanode 在单机上的 Hadoop 中失败

    我使用以下教程在 ubuntu 12 04 LTS 上设置并配置了 sudo 节点 hadoop 环境http www michael noll com tutorials running hadoop on ubuntu linux mu
  • 哪些事件附加到元素?

    如何接收附加到元素的所有事件dojo http dojotoolkit org dojo query mydiv which events does mydiv has 获取 DOM 元素上的所有事件 Get my div myDiv do
  • 复制时谁负责释放数组中的对象?

    在 Objective C 中 如果使用 mutableCopy 将 array1 复制到 array2 并且假设代码在 main 中完成 那么谁负责释放数组中包含的对象 是main 还是array2 我觉得前面的回答都没有抓住重点 或者说
  • 困惑:SQLiteOpenHelper onUpgrade() 的行为如何?并与旧数据库备份一起导入?

    假设我有一个包含 2 列的数据库表 test table 以及 SQLiteOpenHelper 中相应的创建脚本 DB VERSION 1 public void onCreate SQLiteDatabase db db execSql
  • Erlang中如何维护状态?

    我见过人们使用口述 命令 记录用于维护我读过的许多博客中的状态 我发现这是一个非常重要的概念 一般来说 我理解维护状态和递归的含义 但是当涉及到 Erlang 时 我对它的处理方式有点模糊 有什么帮助吗 维护状态的最简单方法是使用gen s
  • 在 Python 中迭代 Stern-Brocot 树的部分内容

    我的目标是迭代 a b a 与 b 的互质对并且 a b我的第一个想法是使用 Stern Brocot 树的递归函数 def Stern Brocot n a 0 b 1 c 1 d 1 if a b c d gt n return 0 x
  • Android BOOT_COMPLETED 事件未启动服务

    我正在编写一个小型 Android 应用程序 它在设备启动时启动我的服务 应用程序在所有 Android 版本 4 4 2 Mi Note 4G 必须在其安全应用程序中启用权限 5 0 Lenovo K3 Note 5 1 一加一 6 Ne
  • Windows 上的 qmake 触摸功能

    qmake 手册记录了touch更新文件时间戳的函数 请参阅 触摸 文件名 参考文件名 http doc qt io qt 5 qmake test function reference html touchfunction 推荐here
  • 如何使用 Firebase 通过我的 Android 应用程序保持用户持续登录

    我目前正在使用 Android Studios 编写一个使用 Firebase 的应用程序 我的问题是 当我登录时 如何在应用程序的整个生命周期中保持该状态 直到我选择注销 到目前为止我在 MainActivity 中做了什么 IN MAI
  • C++ AMP 目前的状况如何

    我正在使用 C 编写高性能代码 并且一直在使用 CUDA 和 OpenCL 最近还使用我非常喜欢的 C AMP 然而 我有点担心它没有得到发展和扩展 并且会消亡 让我产生这个想法的是 即使是 MS C AMP 博客也已经沉默了大约一年 查看
  • Windows 上 JavaFX 的 Gluon 客户端 Maven 插件无法编译?

    我一直在 Windows 机器上为我的一个项目试验 Gluon 的客户端 Maven 插件 我决定尝试一下他们的 hello world 示例之一 here https github com gluonhq client samples我遵
  • 如何访问变量的原始值

    假设我有这个代码 public static long number public static void main String args String str1 args 0 System out println str1 is str
  • 升级到 Cordova 5.0 + [电子邮件受保护] 后,Ajax 请求失败

    我最近升级到 Cordova 5 0 和 Cordova Android 4 0 从那时起 我的应用程序无法再访问外部资源 我还有
  • 使用 Scala 3 宏重写方法

    我正在尝试使用 Scala 3 宏和 TASTY 重写方法 我想重写任何类型的任何方法 现在我从这个简单的案例开始 我有一个测试基类 class TestClass def func s String base 我想实现这一点 但使用 TA
  • 需要 Django 表单帮助

    我是 django 新手 正在尝试制作一个几乎不需要验证的用户注册表单 除此之外 我还想要一个用户名建议代码 它将告诉用户他尝试注册的用户名是否可用或已在使用中 然后它应该给出一些可供选择的建议 任何可能从事过相同或相似项目的人都可以帮助我
  • 以编程方式将 boxBackgroundMode 设置为 TextInputLayout

    我刚刚迁移自com android support 设计 to com google android material implementation androidx appcompat appcompat 1 1 0 implementa
  • 设计时的 Windows 应用商店应用 ResourceLoader

    我已经开始为 Windows 8 1 创建 Windows 应用商店应用程序 现在遇到了有关本地化的问题 我想在设计时显示 resw 文件中的字符串资源 但每次尝试都失败了 即使它在运行时有效 使用 x Uid 属性时 我仍然必须提供 Te