Windows在设计时存储应用程序ResourceLoader
我已经开始为Windows 8.1创建Windowsapp store应用,现在我遇到了有关本地化的问题。
我想在设计时从.resw文件中显示字符串资源,但是每次尝试这样做都会失败,即使它在运行时也能正常工作。
当使用x:Uid属性时,我仍然需要提供Text属性(即对于TextBlock),我不喜欢写两次文本。
我还尝试在viewmodel上为字符串创建一个属性:
public string Title { get { return ResourceLoader.GetForCurrentView("Strings").GetString("MainView_Title"); } }
这在运行时工作,但在设计时它是空白的。
所以问题是,有没有办法在XAML设计器中显示来自.resw文件的资源?
更具体地说,ResourceManager类是否允许在设计时读取.resw文件?
谢谢你的帮助,卢卡斯
旧方法
所以,你可以做几件事。
第一个(也是最简单的,假设您已经使用x:Uid
)只是将文本提供给Text字段。 x:Uid
相关值将覆盖其中的任何内容。
第二种方法是使用你已经拥有的属性,然后检查应用程序是否处于设计时间(通过几种不同的方法),然后返回一个常量值(如果是)和资源(如果不是)。
public string Title { if(ViewModelBase.IsInDesignTimeStatic) //Mvvm Light's easy accessor return "My Text"; return ResourceLoader.GetForCurrentView("Strings").GetString("MainView_Title"); }
希望这有助于编码!
编辑:似乎有一种新方法可以做到这一点,至少从Windows 8.1开始。
新方法
现在,当您想使用输入键MainView_Title
访问您的属性时,请使用此选项。 它更冗长,但它应该在设计器和应用程序本身中进行翻译。
如果您愿意,可以将其随机播放,以便更具可读性,例如:
这是一个老线程,但由于Nate为Win8.1问题提供了这样一个优雅的解决方案,我想我会在这里问…
经过大量的调查和实验,Nate的解决方案似乎不适用于VS2017社区的Win10 UWP应用程序。 LocalizedString方法在运行时工作正常,但它出现了
App.ResourceLoader.GetForViewIndependentUse().GetString(key);
拒绝在设计时返回String.Empty以外的任何内容。 我做了很多实验和类似的事情
ResourceContext.GetForViewIndependentUse().QualifierValues
运行时(工作)和设计时间(不工作)之间似乎相同。
我想知道是否有人遇到过这个并解决了它。 内特? ?
上述就是C#学习教程:Windows在设计时存储应用程序ResourceLoader分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022479.html