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


    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" />

        程序中资源文件的截图:

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

     同样路径 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)改变对比度,选择 PC Settings ->  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  文件中的截图:

    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"); 

    在应用程序中的路径:

    Errors.resw 文件中的截图:

    6、Class Library Resources:

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

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

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

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

      public static class LocalizedNamesLibrary
        {
            static ResourceLoader  resourceLoader = null;
    
            public static string LibraryName { 
                get 
                {
                    String name;
                    GetLibraryName("string1", out name);
                    return name;
                } 
            }
    
            private static void GetLibraryName(string resourceName, out string resourceValue)
            {
                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) 中资源


     

  • 相关阅读:
    许家骏
    平均得分 【杭州电-HDOJ-2023】 附加题+详细说明
    百度之星的第二个问题
    kendo ui 单击取消编辑数据grid减少的原因和治疗方法的数据
    2013年第36周准备考下半年的项目管理师
    2013年第36周三杂记
    2013第36周二小结
    2013第36周星期一
    2013年9月1日下午
    2013年8月最后一天晚上
  • 原文地址:https://www.cnblogs.com/hebeiDGL/p/2686823.html
Copyright © 2020-2023  润新知