首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows商店应用程序ResourceLoader在设计时

Windows商店应用程序ResourceLoader在设计时
EN

Stack Overflow用户
提问于 2013-11-15 15:32:34
回答 2查看 4K关注 0票数 11

我已经开始为Windows8.1创建一个Windows应用程序,现在我遇到了一个关于本地化的问题。

我想在设计时从.resw文件中显示一个字符串资源,但是每次尝试都失败了,即使它在运行时工作。

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

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

代码语言:javascript
复制
public string Title
{
    get { return ResourceLoader.GetForCurrentView("Strings").GetString("MainView_Title"); }
}

这在运行时起作用,但在设计时是空白的。

所以问题是,是否有一种方法可以在XAML-designer中显示来自.resw文件的资源?

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

谢谢你的帮助,卢卡斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-15 19:17:36

旧法

所以,有几件事你可以做。

第一个(也是最简单的,考虑到您已经在使用x:Uid )就是将文本提供给文本字段。x:Uid-related值将覆盖其中的任何内容。

代码语言:javascript
复制
<TextBlock Text="MyText" x:Uid="MainView_Title"/>

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

代码语言:javascript
复制
public string Title
{
     if(ViewModelBase.IsInDesignTimeStatic) //Mvvm Light's easy accessor
         return "My Text";
     return ResourceLoader.GetForCurrentView("Strings").GetString("MainView_Title");
}

希望这有助于和快乐的编码!

编辑:似乎有一种新的方式来做到这一点,至少在Windows8.1。

新方法

  • 创建一个引用ResourceLoader的类(类似于上面描述的属性)。
  • 创建一个索引属性访问器,它接受一个字符串键并从ResourceLoader返回值。 公共类LocalizedStrings {公共字符串此字符串键{ get {返回LocalizedStrings}
  • App.xaml中,定义这种类型的StaticResource。 <公共:本地化字符串x:Key=“本地化”/>

现在,当您想使用输入键MainView_Title访问您的属性时,请使用以下命令。这是更详细,但它应该翻译在设计师和应用程序本身。

代码语言:javascript
复制
<TextBlock Text="{Binding Source={StaticResource Localized}, Path=[MainView_Title]}" />

如果您想要的话,您可以随意调整它,使其更具可读性,例如:

代码语言:javascript
复制
<TextBlock Text="{Binding [MainView_Title], Source={StaticResource Localized}}" />
票数 11
EN

Stack Overflow用户

发布于 2017-06-27 18:26:05

这是一个古老的线程,但是既然Nate为Win8.1提供了一个优雅的解决方案,我想我应该在这里问.

经过大量的调查和实验,Nate的解决方案似乎并不适用于Win10在VS2017社区下的应用程序。LocalizedString方法在运行时工作得很好,但它似乎

代码语言:javascript
复制
App.ResourceLoader.GetForViewIndependentUse().GetString(key);

在设计期间拒绝返回除String.Empty以外的任何内容。我做了很多实验

代码语言:javascript
复制
ResourceContext.GetForViewIndependentUse().QualifierValues

在运行时(工作)和设计时间(不工作)之间似乎是相同的。

我想知道是否有人遇到过并解决了这个问题。Nate?:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20004634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档