zoukankan      html  css  js  c++  java
  • Windows Phone 7 定义和使用字典资源(ResourceDictionary)

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

    文件的语法格式如下

    Test.xaml

    <ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:chartingToolkit
    ="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
    xmlns:visualizationToolkit
    ="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit">

    <!--定义样式资源-->
    <Style x:Key="TextBlockStyle1" TargetType="TextBlock">
    <Setter Property="Foreground" Value="Orange"/>
    <Setter Property="FontSize" Value="24"/>
    <Setter Property="VerticalAlignment" Value="Bottom"/>
    </Style>

    <!--定义数据模板资源-->

    <DataTemplate x:Key="cityDetails">
    <Grid>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="90" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition />
    </Grid.RowDefinitions>
    <TextBlock Text="Activity: "
    Grid.Column
    ="0"
    Grid.Row
    ="0"
    Style
    ="{StaticResource detailsSmallTitle}" />
    <TextBlock Text="{Binding Activity}"
    Grid.Column
    ="1"
    Grid.Row
    ="0"
    Style
    ="{StaticResource detailsSmallText}" />
    ……

    </Grid>
    </DataTemplate>

    <!--定义控件模板资源-->

    <ControlTemplate x:Key="ControlTemplateTest"
    TargetType
    ="chartingToolkit:Chart">
    <Grid>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <visualizationToolkit:Title Grid.ColumnSpan="2"
    Content
    ="{TemplateBinding Title}"
    Style
    ="{TemplateBinding TitleStyle}" />
    ……

    </Grid>
    </ControlTemplate>
    </ResourceDictionary>

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

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

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

    <phone:PhoneApplicationPage.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Test.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </phone:PhoneApplicationPage.Resources>

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

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

    <Application
    x:Class="DataVisualizationOnWindowsPhone.App"
    xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:shell
    ="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">



    <Application.Resources>
    <!-- 添加资源 -->
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Test.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Application.Resources>

    ……

    </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的控件模板资源

    <charting:Chart x:Name="myChart"
    Style
    ="{StaticResource PhoneChartStyle}"
    Template
    ="{StaticResource ControlTemplateTest}">

    ……

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

  • 相关阅读:
    Extension Methods(扩展方法)
    linux面试题
    渗透测试 day4
    渗透测试 day3
    渗透测试 day2
    渗透测试 day1
    9.3 网络安全介绍
    9.2 Iptables
    8.30 进程管理
    8.29 linux的网络
  • 原文地址:https://www.cnblogs.com/linzheng/p/1982140.html
Copyright © 2011-2022 走看看