work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Metro Style App开发快速入门 之资源操作

Posted on 2012-03-14 13:27  work hard work smart  阅读(2128)  评论(0编辑  收藏  举报

Metro Style App 之资源操作

运行环境请参考:Metro Style App之文件访问操作示例,下面介绍的是资源操作的一些体会。

对资源的操作方式主要有以下几种:

1、在Resources.resw文件中定义,然后通过x:Uid获取

使用方式是在x:Uid与之对应,如

 <TextBlock x:Uid="WelcomeWorld" HorizontalAlignment="Left" Height="41" Margin="66,50,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Width="137"/>

 这样TextBlock显示的文本就是hello world!, TextBlock的宽度是100,当然可以自己调整.

2、在文件中访问。如访问图片

  <Image  Source="Images/sample.png"  HorizontalAlignment="Left" Height="200" Width="200"  Stretch="UniformToFill" />

3、使用ResourceLoader.GetString方法获得Resources.resw定义的资源。本例中resourceLoadBtn显示内容为Hello sting1.

 var resourceLoad = new ResourceLoader();
 resourceLoadBtn.Content = resourceLoad.GetString("string1");

 注意:此时string1默认保存在Resources.resw文件中,如果resw的文件名不是Resources.resw,则要进行如下操作,如:

        void anotherResourceBtn_Click(object sender, RoutedEventArgs e)
        {
            var resouceLoad = new ResourceLoader("AnotherResources");
            anotherResourceBtn.Content = resouceLoad.GetString("anotherString");
        }

 AnotherResources为AnotherResources.resw文件.

4、在其它项目中获得所需的资源。新建一个AppResourcesLibrary类库,然后建一个Resources.resw文件。

在Resources.resw文件中的定义如下:

下面是调用的方法

        void AppResourceLibraryBtn_Click(object sender, RoutedEventArgs e)
        {
            var resourceloader = new ResourceLoader("AppResourcesLibrary/Resources");
            AppResourceLibraryBtn.Content = resourceloader.GetString("string1") + " from " + AppResourcesLibrary.LocalizedNamesLibrary.Libraryname;
        }

 

AppResourcesLibrary.LocalizedNamesLibrary.Libraryname这个属性定义在 AppResourcesLibrary类库中的LocalizedNamesLibrary类,

该类的定义如下:

    public static class LocalizedNamesLibrary
    {
        static ResourceLoader  resourceLoader = null;

        public static string LibraryName { 
            get 
            {
                String name;
                GetLibraryName("libraryname", 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);
        }

    }

 该类的定义跟在同一个项目中资源的获取定义一样,此处不在介绍。

总结:以上只是一些资源操作的基础知识,更详细的资料请参考Metro style app的sample。里面还有资源的管理等。

以上只是自己的一点学习心得,如果有什么意见和建议,欢迎大家提出!当然自己还在学习研究中共同学习,一起进步!下一篇将介绍一些Metro app style的动画操作。