博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Phone 7 定义和使用字典资源(ResourceDictionary)
阅读量:7212 次
发布时间:2019-06-29

本文共 3521 字,大约阅读时间需要 11 分钟。

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

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

 ControlTemplate template;

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

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

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

转载地址:http://ctgum.baihongyu.com/

你可能感兴趣的文章
Debian+Matlab2012b 安装 + “archive is not a ZIP archive”解决
查看>>
bitmap资源回收
查看>>
opp小节
查看>>
mysql 一台服务器中装两个mysql
查看>>
Salesforce随笔: 解决被指定给Chatter相关用户的RecordType无法被删除的问题
查看>>
MongoDB学习笔记
查看>>
UML中的序列图(时序图)
查看>>
centos下配置防火墙port失败
查看>>
文档/视图结构的应用
查看>>
从机器学习
查看>>
亚马逊最高级别华人科学家任小枫加盟阿里
查看>>
在_Linux_系统下使用_PhotoRec_&_TestDisk_工具来恢复文件
查看>>
去除inline-block元素间的空隙
查看>>
对话框嵌入到对话框 或者:窗口嵌入到窗口,一个窗口嵌入到另一个窗口
查看>>
多线程编程之二——MFC中的多线程开发
查看>>
iOS笔记【单元格右滑手势】 2017-09-09
查看>>
SEO-搜索引擎优化
查看>>
学习JDK1.8集合源码之--LinkedHashMap
查看>>
jar与war 包解压
查看>>
css outline属性
查看>>