06、应用程序资源(ApplicationResources 上)

摘要:
3) 要更改对比度,请选择PCSettings-˃EaseofAccess-˃High contrast3.StringResourceInCode:您可以使用Windows。应用程序模型。资源。ResourceLoader()方法,以使用C#编程方法获取程序中的资源。字符串资源的标识符必须以“ms-resource”为前缀。资源标识符通常与ms-resource:///resources/,表示资源。resw文件。此外,应用程序可以从类库中获取资源。

1、String Resources In XAML:

下面的 text 使用一个 x:Uid 的属性来引用一个字符串资源。这个 x:Uid 属性根据指定的标识符指导 XAML 转换器(parser)从资源管理系统中获取字符串资源。字符串资源在 资源文件( .resw)中被创建,并且被限制在名称例如为(e.g. en/)的文件夹和 名称为(e.g. name.lang-fr-FR.png)的文件中。在 .resw 文件中的词目的格式类似为 :

[resourceidentifier].[attribute]

 <TextBlock Style="{StaticResource BasicTextStyle}" x:Uid="WelcomeHeader" x:Name="Scenario1TextBlock" Text="Hello" 
HorizontalAlignment="Left" FontSize="20" />

程序中资源文件的截图:

06、应用程序资源(ApplicationResources 上)第1张

在 strings/en/Resources.resw 中 x:Uid 为 WelcomeHeader 的资源:

06、应用程序资源(ApplicationResources 上)第2张

同样路径 ja 文件夹中的 Resources.resw 与之类似。

2、File Resoures In XAML:

图片和其它资源可以基于比例因子、高对比度模式下、用户语言和其它维度进行加载。所有在 XAML和代码中的文件资源都可以被虚拟化,从而可以最好的基于当前应用程序上下文进行利用。

注意,每一张图片的输出需要一个引用逻辑的图片(如 imgages/projecctor.png),但是可以通过类似 (imgages/en/projector.scale-100_contrast-standard.png) 的方式加载程序包中的物理图片。文件夹可以通过限制命名为(e.g. en-US),文件被命名为(e.g en-US/)/and(/or)/ filename 来提高可读性。

如果想看到不同的图片,安装下面的方法进行设置:

1)改变用户的首选语言, 控制面板 -> 时钟、语言、地区 ->语言 -> 添加一个本应用程序支持的语言(英语,或者 日语)。把新语言移动到列表的顶部。

2)通过 visual station 改变模拟器的缩放比例。

3)改变对比度,选择 PCSettings -> Ease of Access -> 选择 高对比度 “High Contrast”

   <Image x:Name="Scenario2Image" Source="Images/projector.png"  HorizontalAlignment="Left" 
Height="80" Width="80" Stretch="UniformToFill" />

3、String Resource In Code:

可以通过使用 Windows.ApplicationModel.Resources.ResourceLoader() 方法,使用 C# 编程的方法获取程序中的资源。

 ResourceLoader  resourceLoader = new ResourceLoader();  //ResourceLoader : 提供对应用程序资源的简化访问,例如应用程序 UI 字符串。

//返回资源的最合适的字符串值,对当前正在运行的应用程序的默认上下文由资源标识符指定。
//resource: 要解决的资源的资源标识符。this.Scenario3TextBlock.Text = resourceLoader.GetString("string1");

在 strings/en/Resources.resw 文件中的截图:

06、应用程序资源(ApplicationResources 上)第3张

4、Resources in the AppX manifest:

附录清单(Appx Manifest)可能引用到字符串和文件资源。这允许应用程序能够提供多个变体(即语言、规模、对比等)的显示名称、商标或其他UI中指定的清单。字符串资源的标识符必须以 "ms-resource" (URI scheme name)作为前缀。文件引用应该简单地指逻辑文件。

打开并浏览 Page.appxmanifest file。

5、Additional Resource Files:

有时,维护单独的资源文件是有用的。虽然默认的资源文件是 resources.resw ,当从附加的文件中加载资源时,字符串标识符应该使用以"/"为开头的绝对路径的 URI 和 文件(例如 /errors/scenario8error 的示例从 errors.resw 文件中加载)。资源标识符(URIs)通常联系到 ms-resource:///resources/ ,这个代表本程序包中的 resource.resw 文件。其他包可以通过URI引用的主机名(如ms资源:/ / packagename /) 从而被引用。

 var resourceLoader = new ResourceLoader("Errors"); //构造函数的参数:新的资源加载程序用于非限定资源引用的资源映射的资源标识符。然后,它可以检索相对于这些引用的资源。

 this.Scenario5TextBlock.Text = resourceLoader.GetString("InvalidOperation"); 

在应用程序中的路径:

06、应用程序资源(ApplicationResources 上)第4张

Errors.resw 文件中的截图:

06、应用程序资源(ApplicationResources 上)第5张

6、Class Library Resources:

在类库(.dll)文件中可以存放它们自己的资源。此外,应用程序可以从类库中获取资源。

1) 本例中,创建了 LocalizedNamesLibrary 类库:

06、应用程序资源(ApplicationResources 上)第6张

在资源文件 Resources.resw 文件中添加键值对:

06、应用程序资源(ApplicationResources 上)第7张

创建 LocalizedNamesLibrary 静态类,用来提供外界访问资源的方法:

  public static classLocalizedNamesLibrary
    {
        static ResourceLoader  resourceLoader = null;

        public static stringLibraryName { 
            get{
                String name;
                GetLibraryName("string1", outname);
                returnname;
            } 
        }

        private static void GetLibraryName(string resourceName, out stringresourceValue)
        {
            if (resourceLoader == null)
            {
                resourceLoader = new ResourceLoader("AppResourceClassLibrary/Resources");
            }
            resourceValue =resourceLoader.GetString(resourceName);
        }

    }

2)在示例中,添加对 1) 类库的引用,并且调用如下:

             var resourceLoader = new ResourceLoader("AppResourceClassLibrary/Resources");
             
this.Scenario6TextBlock.Text = "Retrieved from app: " + resourceLoader.GetString("string1"); //当前应用的资源 this.Scenario6TextBlock2.Text = "Retrieved from class library: " + AppResourceClassLibrary.LocalizedNamesLibrary.LibraryName; //访问类库 1) 中资源

免责声明:文章转载自《06、应用程序资源(ApplicationResources 上)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇鼠标滚轮事件(mousewheel 与 DOMMouseScroll)这个好像、也许、或许、大概、应该、Maybe真的可以算是传说中的简单工厂了吧下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

CSS hover伪类改变其他元素的样式

重要的一点,hover在父元素上,对子元素进行样式调整。也可以#firdiv:hover~.se改变所有同级的元素总结一下:hover对同级别的元素改变样式,改变的是相邻兄弟元素的样式,即一个元素的样式;对元素的子元素应用hover改变样式,可以同时起作用。利用伪类改变其他元素的样式,其他元素须是hover元素的子元素。...

Git安装配置(完整版)

/usr/bin/bashcd/var/www/aunsetGIT_DIRgitpulloriginmaster为您提供了另一个权限:chmod755/var/gitdata/a。git/books/post-receivechowngit:git/var/gitdata/a在git/hooks/post-receive模式下,客户端提交代码,服务器项目可以...

学习Python3 天眼查 爬虫

在开始学习Python时,我不想看基础知识,而且我的记忆力很差。我记不住那些语法,所以我直接去了这个项目。这是相当深刻的。刚好公司有情况需要检查企业的信息,所以我想成为一名爬虫。那些有验证码的人不愿意这样做。这是个大问题。我选择了天眼查,跳过检查过程,直接写下结果。总结的步骤如下:首先,天眼查最大的障碍是字体问题。本网站上有介绍,大致意思是网页上显示的一些字...

ArchLinux安装英伟达显卡驱动

Optimus manager qt Install novausudopacman-Sxf86-video novau右键单击导航栏上的Intel图标,选择列表中的设置功能,单击左侧的Optimus,然后在右侧窗口中选择nouveau作为切换方法。右键单击导航栏上的Intel图标以选择要使用的图形卡类型。在我选择Nvidia显卡后,您需要注销并再次登录才能...

ES6学习之对象的遍历

写在前面的话:在es6中一共有五种遍历对象的方法,如下:for...infor...in循环遍历对象自身的和继承的可枚举属性。Object.getOwnPropertySymbolsObject.getOwnPropertySymbols返回一个数组,包含对象自身的所有Symbol属性的键名。其结果为:从结果可以看出对boy对象的遍历可以得到他的直接身的属性...

Python读取JSON数据操作实例解析

为了遵循JSON规范,您应该只编写Python列表和字典。JSON编码格式与Python语法几乎相同,只是存在一些细微差异。...