<Window x:Class="WPF触发器测试.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:WPF触发器测试"
d:DataContext="{d:DesignInstance Type=local:MainWindowViewModel}"
mc:Ignorable="d"
TextElement.FontSize="18"
Title="MainWindow"
Height="450"
Width="800">
<Grid>
<Grid.Resources>
<Style TargetType="Border"
x:Key="bor">
<Setter Property="Width"
Value="200" />
<Setter Property="Height"
Value="200" />
<Setter Property="Background"
Value="#8070D8" />
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="Triggers Test"
Margin="0 10"
HorizontalAlignment="Center"
FontSize="20" />
<TabControl Grid.Row="1">
<TabItem Header="Property Trigger">
<StackPanel>
<Border>
<Border.Style>
<Style TargetType="Border"
BasedOn="{StaticResource bor}">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="CornerRadius"
Value="10" />
<Setter Property="Background"
Value="#604BD8" />
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</StackPanel>
</TabItem>
<TabItem Header="Multi Trigger">
<StackPanel HorizontalAlignment="Center">
<StackPanel.Resources>
<Style TargetType="Button">
<Setter Property="Margin"
Value="10" />
<Setter Property="Background"
Value="#086FA1" />
<Setter Property="Foreground"
Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="bor"
Background="{TemplateBinding Background}"
BorderThickness="0"
Padding="24 8"
CornerRadius="5">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsEnabled"
Value="False" />
</MultiTrigger.Conditions>
<Setter Property="Background"
Value="LightGray" />
</MultiTrigger>
<!--<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background"
Value="#3CA0D0" />
</Trigger>
<Trigger Property="IsEnabled"
Value="False">
<Setter Property="Background"
Value="LightGray" />
</Trigger>-->
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</StackPanel.Resources>
<Button Content="正常按钮" />
<Button Content="禁用按钮"
IsEnabled="False" />
</StackPanel>
</TabItem>
<TabItem Header="Data Trigger">
<StackPanel>
<TextBlock Margin="20 10"
Foreground="Gray">
<Run Text="当输入的数据是 Error 时 方框变红色" />
<LineBreak />
<Run Text="当输入的数据是 OK 时 方框变绿色" />
</TextBlock>
<Rectangle>
<Rectangle.Style>
<Style TargetType="Rectangle">
<Setter Property="Width"
Value="40" />
<Setter Property="Height"
Value="20" />
<Setter Property="Fill"
Value="#235D79" />
<Style.Triggers>
<DataTrigger Binding="{Binding TestString}"
Value="Error">
<Setter Property="Fill"
Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding TestString}"
Value="OK">
<Setter Property="Fill"
Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
<TextBlock Text="{Binding TestString,StringFormat=数据值: {0} }"
Margin="0 10"
HorizontalAlignment="Center" />
<TextBox Width="240"
Text="{Binding TestString, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</TabItem>
<TabItem Header="Event Trigger"
IsSelected="True">
<StackPanel HorizontalAlignment="Center">
<StackPanel.Resources>
<Style TargetType="Button">
<Setter Property="Background"
Value="#2E16B1" />
<Setter Property="Foreground"
Value="White" />
<Setter Property="BorderThickness"
Value="0" />
<Setter Property="Padding"
Value="0 4" />
</Style>
</StackPanel.Resources>
<TextBlock Text="响应路由事件,通常用于启动动画"
Margin="0 10 0 20"
Foreground="Gray"
HorizontalAlignment="Center" />
<Button Content="悬停动画"
Margin="10">
<Button.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever">
<!-- 透明度 -->
<DoubleAnimation Storyboard.TargetProperty="FontSize"
From="16"
To="24"
AutoReverse="True"
Duration="0:0:0.4" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="FontSize"
From="20"
To="16"
Duration="0:0:0.3" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
<Button Content="悬停我">
<Button.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="1.0"
To="0.5"
Duration="0:0:0.3" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="0.5"
To="1.0"
Duration="0:0:0.3" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</StackPanel>
</TabItem>
</TabControl>
</Grid>
</Window>
本文由 jxxxy 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。