1、首先需要创建一个资源字典的文件,也就是一个xaml的文件。

文件的语法格式如下

Test.xaml

  1. <ResourceDictionary
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
  5. xmlns:visualizationToolkit="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit">
  6. <!--定义样式资源-->
  7. <Style x:Key="TextBlockStyle1" TargetType="TextBlock">
  8. <Setter Property="Foreground" Value="Orange"/>
  9. <Setter  Property="FontSize" Value="24"/>
  10. <Setter  Property="VerticalAlignment" Value="Bottom"/>
  11. </Style>
  12. <!--定义数据模板资源-->
  13. <DataTemplate x:Key="cityDetails">
  14. <Grid>
  15. <Grid.ColumnDefinitions>
  16. <ColumnDefinition Width="Auto" />
  17. <ColumnDefinition Width="90" />
  18. </Grid.ColumnDefinitions>
  19. <Grid.RowDefinitions>
  20. <RowDefinition />
  21. <RowDefinition />
  22. </Grid.RowDefinitions>
  23. <TextBlock Text="Activity: "
  24. Grid.Column="0"
  25. Grid.Row="0"
  26. Style="{StaticResource detailsSmallTitle}" />
  27. <TextBlock Text="{Binding Activity}"
  28. Grid.Column="1"
  29. Grid.Row="0"
  30. Style="{StaticResource detailsSmallText}" />
  31. ……
  32. </Grid>
  33. </DataTemplate>
  34. <!--定义控件模板资源-->
  35. <ControlTemplate x:Key="ControlTemplateTest"
  36. TargetType="chartingToolkit:Chart">
  37. <Grid>
  38. <Grid.ColumnDefinitions>
  39. <ColumnDefinition Width="*" />
  40. <ColumnDefinition Width="Auto" />
  41. </Grid.ColumnDefinitions>
  42. <Grid.RowDefinitions>
  43. <RowDefinition Height="Auto" />
  44. <RowDefinition Height="*" />
  45. </Grid.RowDefinitions>
  46. <visualizationToolkit:Title Grid.ColumnSpan="2"
  47. Content="{TemplateBinding Title}"
  48. Style="{TemplateBinding TitleStyle}" />
  49. ……
  50. </Grid>
  51. </ControlTemplate>
  52. </ResourceDictionary>

Style的x:Key属性是资源字典里面的资源的唯一的标示符,也是作为在其他页面调用的一个唯一的Key来进行调用。

2、调用资源资源中的资源

在MainPage.xaml页面中添加资源字典,语法如下

  1. <phone:PhoneApplicationPage.Resources>
  2. <ResourceDictionary>
  3. <ResourceDictionary.MergedDictionaries>
  4. <ResourceDictionary Source="Test.xaml"/>
  5. </ResourceDictionary.MergedDictionaries>
  6. </ResourceDictionary>
  7. </phone:PhoneApplicationPage.Resources>

ResourceDictionary.MergedDictionaries 获取 ResourceDictionary 字典的集合,这些字典构成了合并字典中的各种资源字典。

如果想在程序启动时加载所有的资源,可以再App.xaml页面上添加资源的加载,语法如下

  1. <Application
  2. x:Class="DataVisualizationOnWindowsPhone.App"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
  6. <Application.Resources>
  7. <!-- 添加资源 -->
  8. <ResourceDictionary>
  9. <ResourceDictionary.MergedDictionaries>
  10. <ResourceDictionary Source="Test.xaml"/>
  11. </ResourceDictionary.MergedDictionaries>
  12. </ResourceDictionary>
  13. </Application.Resources>
  14. ……
  15. </Application>

3、使用字典资源中的资源

在MainPage.xaml页面中的控件调用自定义的资源,语法如下

调用字典资源中x:Key值为TextBlockStyle1的样式资源

<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
   <TextBlock Text="Some Text" Style="{StaticResource TextBlockStyle1}"/>
  </StackPanel>

调用字典资源中x:Key值为cityDetails的数据模板资源

<ContentControl ContentTemplate="{StaticResource cityDetails}"
                                        HorizontalAlignment="Left"
                                        x:Name="DetailsControl" Margin="0,0,0,5" />

调用字典资源中x:Key值为ControlTemplateTest的控件模板资源

  1. <charting:Chart x:Name="myChart"
  2. Style="{StaticResource PhoneChartStyle}"
  3. Template="{StaticResource ControlTemplateTest}">
  4. ……
  5. </charting:Chart>

也可以在cs页面调用字典资源,语法如下

ControlTemplate template;

template = Application.Current.Resources["ControlTemplateTest"] as ControlTemplate;

myChart.Template = template;

更多的介绍请参考MSDN的Silverlight资源字典介绍

MSDN的Silverlight资源字典详细介绍

http://msdn.microsoft.com/zh-cn/library/cc903952(v=VS.95).aspx

本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1078682

Windows Phone 7 定义和使用字典资源(ResourceDictionary)相关推荐

  1. Windows Phone开发(15):资源

    原文:Windows Phone开发(15):资源 活字印刷术是我国"四大发明"之一,毕昇在发明活字印刷术之后,他很快发现一个问题,随着要印刷资料的不断增加,要用到的汉字数目越来越 ...

  2. 【Windows 10 应用开发】细说文本资源文件(resw)

    原文:[Windows 10 应用开发]细说文本资源文件(resw) 最近,小戏骨版<红楼梦>很是火热,老周一口气看完了9集,一直看到 Surface 的风扇呼呼响.林黛玉和薛宝钗这两个角 ...

  3. linux怎么知道ping命令,教程方法;通过ping命令查看服务器类型(linux还是windows系列)电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;通过ping命令查看服务器类型(linux还是windows系列)电脑技巧,以下是给大家带来的教程方法;通过ping命令查看服务器类型(linux还是windows系列),大家 ...

  4. python多维字典_python定义多维字典

    在python中默认的dict方法定义多维字典较为复杂 并不能直接通过a=dict() a['b']['c']['d'] = 1 >>> a['b']['c']['d']=1 Tra ...

  5. Python字典(字典的定义,创建字典,获取字典中的数据,字典元素增删改,获取字典视图,字典的遍历,字典的特点,字典生成公式)

    1.字典的定义 2.创建字典 3.获取字典中的数据 4.字典元素增删改 5.获取字典视图 lst={'数值1':300,'数值2':100,'数值3':400,'数值4':200} print(lst ...

  6. Windows的消息定义大全

    消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了. 例如:单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序.           消息本身是作为 ...

  7. php-fpm定义成集群资源时报错解决方法

    这是我在实验中碰到的问题,我们在定义php-fpm为资源的时候,用php程序包自带的脚本会报错. 笔者花了很多时间尝试了各种办法,最后找到了一位网友写的脚本,可以解决. 脚本如下: #!/bin/sh ...

  8. python字典定义方式_Python字典常用方法及汇总

    字典的概念 字典是"键值对"的无序可变序列,字典中的每个元素都是一个"键值对",包含:"键对象"和"值对象".可以通过& ...

  9. python中字典的定义及创建字典

    一.字典(dictionary) 字典和列表类似,也是可变序列,只是与列表不同,它是无序的可变序列,保存的内容是以"键--值对"的形式存放,这类似于我们使用查找汉字的新华字典,它可 ...

最新文章

  1. A Neural Probabilistic Language Model 论文阅读及实战
  2. 《Java解惑》陷阱和缺陷的目录
  3. 黑马程序员_java总结_网络编程基础
  4. 强化学习7——基于环境模型的RL方法
  5. 1_5 PrototypeMode 原型(克隆)模式
  6. 分压式静态工作点稳定电路
  7. 目标跟踪【更新中...】
  8. SBUS协议转换芯片,SBUS转UART,sbus转rs232,sbus解码IC,zr003
  9. access通过身份证号提取性别_身份证号码男女函数(excel中关于18位身份证号的提取性别公式)...
  10. 计算机中xp系统中qq文件,从做完xp系统怎样恢复qq文?
  11. 半小时体验云原生:手把手教你在k8s上部署springboot应用——干货分享,建议收藏
  12. 大数据与云计算学习:Python网络数据采集
  13. php怎么使用sendcloud,PHP开发之SendCloud发送邮件知几何
  14. UIPinchGestureRecognizer 放大、缩小手势
  15. 重庆大学计算机在职研究生,重庆大学在职研究生招生学院_重庆大学在职研究生_学校查找_在职研究生教育信息网...
  16. C++ 多线程学习总结
  17. 《流放者柯南》自建服务器,柯南流亡者:如何设置自己的私人服务器 | MOS86
  18. 春节祝福短信怎么发?付详细文案
  19. 每日一算法:矩阵中最大正方形面积
  20. 解决Ubuntu16.04软件商店无法加载

热门文章

  1. js面向对象2--原型
  2. SWIFT4.0学习01 - 函数的命名、调用以及注意事项
  3. P3163 [CQOI2014]危桥
  4. mvc:annotation-driven/浅析
  5. 定制textField
  6. [HDOJ1897]继续畅通工程
  7. 模块设计之“模块”与“模块化”
  8. Enterprise Library2.0研究(一)日志组件的使用场景
  9. Python 错误:ValueError: unsupported format character ‘Y‘ (0x59) at index 146
  10. mysql 5.6.17 备份还原_mysql 备份和恢复