天天看點

Windows Phone 三、樣式和資源

定義樣式和引用資源

1     <Page.Resources>
 2         <!-- 向資源字典中添加一個鍵為ButtonBackground值為SolidColorBrush對象 -->
 3         <SolidColorBrush
 4             x:Key="ButtonBackground"
 5             Color="Aqua"/>
 6         <!-- 向資源字典中添加一個鍵為ButtonForeground值為SolidColorBrush對象 -->
 7         <SolidColorBrush
 8             x:Key="ButtonForeground"
 9             Color="Black"/>
10         <!-- 向資源字典中添加一個鍵為ButtonFontSize值為x:Double對象 -->
11         <x:Double x:Key="ButtonFontSize">20</x:Double>
12     </Page.Resources>
13     <Grid>
14         <!--根據資源名稱,引用資源-->
15         <Button
16             Content="Button"
17             Background="{StaticResource ButtonBackground}"
18             Foreground="{StaticResource ButtonForeground}"
19             FontSize="{StaticResource ButtonFontSize}"/>
20     </Grid>      

資源字典中可以添加各種各樣類型的資源,這取決于資源對象的類型,不同對象的類型,對應不同類型的資源标簽。

顔色對應SolidColorBrush  數值對應x:Double

類型選擇器

1     <Page.Resources>
 2         <!--類型選擇器-->
 3         <!--Style節點可以不用指定一個具體的鍵,有一個預設的鍵(typeof(Button))-->
 4         <Style TargetType="Button">
 5             <!--預設樣式-->
 6             <Setter Property="Width" Value="200"/>
 7             <Setter Property="Background" Value="HotPink"/>
 8         </Style>
 9         <Style x:Key="ButtonStyle" TargetType="Button">
10             <!--ButtonStyle樣式-->
11             <Setter Property="Width" Value="300"/>
12             <!--在Value無法指派的情況下,可以使用以下寫法-->
13             <Setter Property="Background">
14                 <Setter.Value>
15                     <SolidColorBrush Color="Aqua"/>
16                 </Setter.Value>
17             </Setter>
18         </Style>
19         <!--示範x:Name也可以-->
20         <Style x:Name="ButtonName" TargetType="Button"/>
21     </Page.Resources>
22     <StackPanel>
23         <!--Button的Style預設指向的鍵為this.GetType()/typeof(Button)預設樣式-->
24         <Button Content="Button1"/>
25         <!--指定ButtonStyle樣式-->
26         <Button
27             Content="Button2"
28             Style="{StaticResource ButtonStyle}"/>
29     </StackPanel>      

外部資源引用

1 <ResourceDictionary
2     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
4     <SolidColorBrush x:Key="ButtonBackground" Color="DarkOrchid"/>
5 </ResourceDictionary>      

Styles.xaml

Styles.xaml 被建立在Resources檔案夾當中

主程式資源

1 <Application
 2     x:Class="MyApp.App"
 3     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5     xmlns:local="using:MyApp">
 6     <!--Application.Resources全局共享-->
 7     <Application.Resources>
 8         <SolidColorBrush x:Key="ButtonBackground" Color="Navy"/>
 9     </Application.Resources>
10 </Application>      

外部引用代碼

1 <Page
 2     x:Class="MyApp.MainPage"
 3     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5     xmlns:local="using:MyApp"
 6     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 7     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 8     mc:Ignorable="d"
 9     Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
10     <!--Page.Resources整個頁面共享-->
11     <Page.Resources>
12         <ResourceDictionary Source="Resources/Styles.xaml"/>
13     </Page.Resources>
14     <Grid>
15         <!--局部共享-->
16         <Grid.Resources>
17             <!--ResourceDictionary标簽可省略-->
18             <ResourceDictionary>
19                 <!--就近原則-->
20                 <SolidColorBrush x:Key="ButtonBackground" Color="HotPink"/>
21             </ResourceDictionary>
22         </Grid.Resources>
23         <Button Content="Button"
24                 Background="{StaticResource ButtonBackground}"/>
25     </Grid>
26 </Page>      

不同主題定義不同資源

1     <Page.Resources>
 2         <!--為不同主題定義不同資源必須寫ResourceDictionary标簽-->
 3         <ResourceDictionary>
 4             <!--也是一個資源字典-->
 5             <ResourceDictionary.ThemeDictionaries>
 6                 <!--Default是固定值,預設預設狀态,很少使用,一般使用下面三種-->
 7                 <ResourceDictionary x:Key="Default">
 8                     <SolidColorBrush x:Key="Color" Color="Aqua"/>
 9                 </ResourceDictionary>
10                 <!--Dark是固定值,深色主題狀态-->
11                 <ResourceDictionary x:Key="Dark">
12                     <SolidColorBrush x:Key="Color" Color="Red"/>
13                 </ResourceDictionary>
14                 <!--Light是固定值,淺色主題狀态-->
15                 <ResourceDictionary x:Key="Light">
16                     <SolidColorBrush x:Key="Color" Color="Green"/>
17                 </ResourceDictionary>
18                 <!--HighContrast是固定值,高對比主題狀态-->
19                 <ResourceDictionary x:Key="HighContrast">
20                     <SolidColorBrush x:Key="Color" Color="Blue"/>
21                 </ResourceDictionary>
22             </ResourceDictionary.ThemeDictionaries>
23         </ResourceDictionary>
24     </Page.Resources>
25     <StackPanel>
26         <!--ThemeResource可以實時的根據主題變化而選擇不同資源,動态讀取,不斷偵測,消耗資源、性能、電量,效率低-->
27         <Button Background="{ThemeResource Color}" Content="ThemeResource"/>
28         <!--StaticResource應用啟動時選擇不同資源,用于引用靜止不動的資源(控件模版)效率高-->
29         <Button Background="{StaticResource Color}" Content="StaticResource"/>
30     </StackPanel>      

轉載于:https://www.cnblogs.com/includeling/p/4563704.html

繼續閱讀