WPF样式基础

1. 创建样式对象

<Window x:Class="项目10.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:项目10"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="500">
    <Window.Resources>
        <FontFamily x:Key="ButtonFontFamily">Times New Roman</FontFamily>
        <sys:Double x:Key="ButtonFontSize">18</sys:Double>
        <FontWeight x:Key="ButtonFontWeight">Bold</FontWeight>
        <Style x:Key="BigFontButtonStyle">
            <Setter Property="Control.FontFamily" Value="Times New Roman"/>
            <Setter Property="Control.FontSize" Value="25"/>
            <Setter Property="Button.FontSize" Value="15"/>
            <Setter Property="TextBlock.FontSize" Value="35"/>
            <Setter Property="Control.FontWeight" Value="Bold"/>
            <Setter Property="Control.Background">
                <Setter.Value>
                    <ImageBrush TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 32 32" Opacity="0.8"
                                ImageSource="Images/Chrysanthemum.jpg"></ImageBrush>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <StackPanel Margin="5" x:Name="StackPanel1">
        <Button Margin="6" Padding="6" x:Name="Button1"
                FontFamily="{StaticResource ButtonFontFamily}" FontSize="{StaticResource ButtonFontSize}"
                FontWeight="{StaticResource ButtonFontWeight}" >A Customized Button</Button>
        <TextBlock Margin="6" Padding="6" x:Name="TextBlock1">Normal Content</TextBlock>
        <Button Style="{StaticResource BigFontButtonStyle}" Margin="6" Padding="6" x:Name="Button2">Button</Button>
        <TextBlock Margin="6" Padding="6" x:Name="TextBlock2">More Normal Content</TextBlock>
        <Button Margin="6" Padding="6" x:Name="Button3">Button</Button>
        <TextBlock Style="{StaticResource BigFontButtonStyle}" Margin="6" Padding="6" x:Name="TextBlock3">Normal Content</TextBlock>
        <Button Margin="6" Padding="6" x:Name="Button4">Button</Button>
        <TextBlock Margin="6" Padding="6" x:Name="TextBlock4">Normal Content</TextBlock>
    </StackPanel>
</Window>

2. 关联时间处理程序

<Window x:Class="项目10.EventSetter"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:项目10"
        mc:Ignorable="d"
        Title="EventSetter" Height="450" Width="500">
    <Window.Resources>
        <Style x:Key="MouseOverStyle">
            <Setter Property="TextBlock.Padding" Value="12"></Setter>
            <EventSetter Event="FrameworkElement.MouseEnter" Handler="element_MouseEnter"></EventSetter>
            <EventSetter Event="FrameworkElement.MouseLeave" Handler="element_MouseLeave"></EventSetter>
        </Style>
    </Window.Resources>
    <StackPanel x:Name="StackPanel1" Margin="6">
        <TextBlock Style="{StaticResource MouseOverStyle}" Margin="6" Padding="6" x:Name="TextBlock1" HorizontalAlignment="Center">Hover over</TextBlock>
        <TextBlock Margin="6" Padding="6" x:Name="TextBlock2" HorizontalAlignment="Center">Dont bother me</TextBlock>
        <TextBlock Style="{StaticResource MouseOverStyle}" Margin="6" Padding="6" x:Name="TextBlock3" HorizontalAlignment="Center">Hover over</TextBlock>
</StackPanel>
</Window>
<Application x:Class="项目10.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:项目10"
             StartupUri="EventSetter.xaml">
</Application>
private void element_MouseEnter(object sender, MouseEventArgs e)
{
    ((TextBlock)sender).Background=new SolidColorBrush(Colors.LightGoldenrodYellow);
}
private void element_MouseLeave(object sender, MouseEventArgs e)
{
    ((TextBlock) sender).Background = null;
}

3. 样式的继承