Windows Phone 7 定義和使用字典資源(ResourceDictionary)

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.