定義樣式和引用資源
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