WPF之样式
一
<Window x:Class="WpfApp3.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:local="clr-namespace:WpfApp3"
xmlns:vm="clr-namespace:WpfApp3.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
</Window.Resources>
<Grid>
<StackPanel Orientation="Vertical" Margin="10">
<Button Height="30" Content="A" Margin="5">
<Button.Style>
<Style>
<Style.Setters>
<Setter Property="Button.Foreground" Value="Red"/>
<Setter Property="Button.Background" Value="Black"/>
</Style.Setters>
</Style>
</Button.Style>
</Button>
<Button Height="30" Content="B" Margin="5"/>
<Button Height="30" Content="C" Margin="5"/>
</StackPanel>
</Grid>
</Window>
二
<Window x:Class="WpfApp3.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:local="clr-namespace:WpfApp3"
xmlns:vm="clr-namespace:WpfApp3.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
</Window.Resources>
<Grid>
<StackPanel Orientation="Vertical" Margin="10">
<Button Height="30" Content="A" Margin="5">
<Button.Style>
<Style TargetType="{x:Type Button}">
<!--<Style.Setters>
<Setter Property="Button.Foreground" Value="Red"/>
<Setter Property="Button.Background" Value="Black"/>
</Style.Setters>-->
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Black"/>
</Style>
</Button.Style>
</Button>
<Button Height="30" Content="B" Margin="5"/>
<Button Height="30" Content="C" Margin="5"/>
</StackPanel>
</Grid>
</Window>
继承样式
<Window x:Class="WpfApp3.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:local="clr-namespace:WpfApp3"
xmlns:vm="clr-namespace:WpfApp3.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style TargetType="{x:Type Button}" x:Key="baseBtn">
<Setter Property="Foreground" Value="Red"/>
</Style>
<Style TargetType="{x:Type Button}" x:Key="myBtn1" BasedOn="{StaticResource baseBtn}">
<Setter Property="Background" Value="Black"/>
</Style>
<Style TargetType="{x:Type Button}" x:Key="myBtn2" BasedOn="{StaticResource baseBtn}">
<Setter Property="Background" Value="Gray"/>
</Style>
</Window.Resources>
<Grid>
<StackPanel Orientation="Vertical" Margin="10">
<Button Height="30" Content="A" Margin="5" Style="{StaticResource myBtn1}">
</Button>
<Button Height="30" Content="B" Margin="5" Style="{StaticResource myBtn2}" />
<Button Height="30" Content="C" Margin="5" Style="{StaticResource myBtn1}"/>
</StackPanel>
</Grid>
</Window>
事件设置器
<Window x:Class="WpfApp3.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:local="clr-namespace:WpfApp3"
xmlns:vm="clr-namespace:WpfApp3.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style TargetType="{x:Type Button}" x:Key="baseBtn">
<Setter Property="Foreground" Value="Red"/>
</Style>
<Style TargetType="{x:Type Button}" x:Key="myBtn1" BasedOn="{StaticResource baseBtn}">
<Setter Property="Background" Value="Black"/>
<EventSetter Event="MouseEnter" Handler="Button_MouseEnter"></EventSetter>
</Style>
<Style TargetType="{x:Type Button}" x:Key="myBtn2" BasedOn="{StaticResource baseBtn}">
<Setter Property="Background" Value="Gray"/>
</Style>
</Window.Resources>
<Grid>
<StackPanel Orientation="Vertical" Margin="10">
<Button Height="30" Content="A" Margin="5" Style="{StaticResource myBtn1}">
</Button>
<Button Height="30" Content="B" Margin="5" Style="{StaticResource myBtn2}" />
<Button Height="30" Content="C" Margin="5" Style="{StaticResource myBtn1}"/>
</StackPanel>
</Grid>
</Window>
private void Button_MouseEnter(object sender, MouseEventArgs e)
{
Button btn = (Button)sender;
btn.Background = new SolidColorBrush(Colors.White);
}