天极传媒:
天极网
比特网
IT专家网
52PK游戏网
极客修
全国分站

北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨

产品
  • 网页
  • 产品
  • 图片
  • 报价
  • 下载
全高清投影机 净化器 4K电视曲面电视小家电滚筒洗衣机
您现在的位置: 天极网 > 开发>技术文档>WP开发环境下 资源字典的直接定义

基于WP开发环境下:资源字典的直接定义

天极网开发频道 2012. 03. 30 作者:Prince Wang 责编:王健楠
我要吐槽

责任编辑

  在Windows Phone开发中的资源字典功能是一种提供资源共享的机制,可以在多个地方定义,可以在XAML中或C#代码中使用,但大多情况用于在XAML中定义可能多处使用的对象。资源字典最常用的场景有:在XAML中定义样式或模板、在XAML中定移动化处理相关的演示图版、在XAML中定义数据绑定相关的对象。具体包括样式和模板、画笔和颜色、动画对象、转换器、一般对象等。

  资源字典是一个键控对象字典,对应System.Windows命名空间下的Resource Dictionary类。SL中的FrameworkElement类和Application类都有一个ResourceDictionary类型的属性Resources,这也就意味着所有FrameworkElement类和AppLication类都可以承载资源字典。按照承载对象来分,资源字典相应地分为直接资源字典(FrameworkElement承载)、应用程序资源字典(Application承载)和独立文件资源字典(由单独的XAML文件承载)3类。

  1.直接资源字典

  由FrameworkDlement.Resources承载的资源字典成为直接资源字典。由于Control类是FrameworkElement类的子孙类,因为几乎页面中所有的控件下都可以定义资源字典。

  如示例中尉一个Grid空间下定义的资源字典片段代码:

        XAML  Code

        <Grid>

             <Grid.Resources>

                <!--资源1-->

                <! --资源2-->

                <! --.....-->

              </Grid.Resources>

        </Grid>

  由此可知道,Grid.Resources节点实际上就对应Grid的Resources属性。其中定义的资源项一般都会有一个x:Name/ x:Key作为标识,然后该Grid中的所有子孙控件都可以通过此标识引用该资源项,实现该Grid范围内的资源共享。

  在每一个控件下都可以定义资源字典,但过于分散的资源字典定义会导致页面代码的混乱,也打不到理想的资源共享范围。因而在每个控件下定义资源字典并不是一个很值得推荐的方案。由于Windows Phone7中的页面是一个PhoneApplicationPage控件,所以通常的做法是,将页面中所有的资源字典都交给当前页面控件PhoneApplicationPage来承载。即在XAML页面的phone:PhoneApplicationPage.Tesources标记下直接进行如下定义:

        XAML  Code

        <phone:phoneApplicationPage.Resources>

             <!--资源1-->

             <!--资源2-->

             <!--.....-->

        </phone:phoneApplicationPage.Resources>

  这样讲整个页面的资源定义在同一区域,方便管理。这种直接定义在页面空间下的资源字典也成为页资源字典。

  2.应用程序资源字典

  对于一些可在多个页面中重复使用的资源,可以直接定义在Application下。具体方法为直接打开App.xaml文件,然后在其中的Application.Resources节点下进行资源定义。

               XAML  Code

               <Application.Resources>

                    <!--资源1-->

                    <!--资源2-->

                    <!--.....-->

               </Application.Resources>

    在此处定义的资源,将可以再整个应用程序范围内共享。

    3.独立文件资源字典

    在某些情况下,也可以将资源字典定义在单独的XAML文件中,然后在需要的地方通过C#代码动态加载或通过ResourceDictionary.MergedDictionarids属性进行合并。如下代码为将两个XAML文件Resources1.xaml和Resources2.xaml总的资源字典合并到了当前页面的资源字典中。

               XAML  Code

        <phone:phoneApplicationPage.Resources>

        <ResourceDictionary>

          <ResourceDictionary.MergedDictionaries>

            <ResourceDictionary Source="/Resources1.xaml">

            <ResourceDictionary Source="/Resources2.xaml">

          <ResourceDictionary.MergedDictionaries>

        </ResourceDictionary>

        </phone:phoneApplicationPage.Resources>

作者:Prince Wang责任编辑:王健楠)
请关注天极网天极新媒体 最酷科技资讯
扫码赢大奖
评论
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
办公软件IT新闻整机