WPF样式基础
1. 创建样式对象
Control.FontSize
可以设置多次,但以最后一次设置为准
<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. 样式的继承
-
BasedOn
可以用来继承别的样式
<Style x:Key="EmphasizedBigFontButtonStyle" BasedOn="{StaticResource BigFontButtonStyle}">
<Setter Property="Control.Foreground" Value="Red"/>
<Setter Property="Control.Background" Value="DarkBlue"/>
</Style>

4. 为特定类型对象自动应用样式
TargetType="Button"
取消Key属性,增加TargetType即可
<Style TargetType="Button" BasedOn="{StaticResource BigFontButtonStyle}">
<Setter Property="Control.Foreground" Value="Red"/>
<Setter Property="Control.Background" Value="DarkBlue"/>
</Style>
- 如果某个按钮不想是用上默认样式,可以设置成
Style="{x:Null}"
