YangLei's

导航

 
<Window x:Class="多种触发器.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="633" Width="669">
    <Window.Resources>
        <!-- 定义公共label资源-->
        <Style x:Key="LabelStyle">
            <Setter Property="Control.Background" Value="Wheat"></Setter>
            <Setter Property="Control.BorderBrush" Value="Black"></Setter>
            <Setter Property="Control.BorderThickness" Value="1"></Setter>
        </Style>
         <!--BaseOn 继承上面的资源,一个简单的事件触发器。-->
        <Style x:Key="Triggers" BasedOn="{StaticResource LabelStyle}">
            <Style.Triggers>
                <Trigger Property="Control.IsMouseOver" Value="True">
                    <Setter Property="Control.Background" Value="Red"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
        <!---->
        <Style x:Key="MultiTrigger" BasedOn="{StaticResource LabelStyle}">
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="Control.IsMouseOver" Value="True"></Condition>
                        <Condition Property="Control.IsFocused" Value="False"></Condition>
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="Control.Background" Value="Green"></Setter>
                    </MultiTrigger.Setters>
                </MultiTrigger>
            </Style.Triggers>
        </Style>
         <!--EventTrigger多条件触发器 -->
        <Style x:Key="EventTrigger" BasedOn="{StaticResource LabelStyle}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="Mouse.MouseEnter">
                    <EventTrigger.Actions>
                        <BeginStoryboard Name="ExpendWidth">
                            <Storyboard>
                                <DoubleAnimation Duration="0:0:5" Storyboard.TargetProperty="Width" To="300"></DoubleAnimation>
                                <DoubleAnimation Duration="0:0:5" Storyboard.TargetProperty="Height" To="200"></DoubleAnimation>
                                <DoubleAnimation Duration="0:0:5" Storyboard.TargetProperty="FontSize" To="30" ></DoubleAnimation>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
                <EventTrigger RoutedEvent="Mouse.MouseLeave">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetProperty="FontSize"></DoubleAnimation>
                                <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Width"></DoubleAnimation>
                                <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Height"></DoubleAnimation>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    
    <StackPanel Orientation="Vertical">
        <Label Height="28" Name="label1" VerticalAlignment="Top" Width="79" Style="{StaticResource Triggers}" >简单触发器</Label>
        <Label Height="28" Name="label2" VerticalAlignment="Top" Width="90" Margin="10,10" Style="{StaticResource MultiTrigger}" Foreground="Red" >多条件触发器</Label>
        <Label Height="40" Name="label4" Margin="0,0,0,10"  Width="120" Style="{StaticResource EventTrigger}" VerticalContentAlignment="Center" HorizontalContentAlignment="Center">事件触发器</Label>
        
            <Label Height="40" Name="label3"  Width="120" Style="{StaticResource LabelStyle}" VerticalContentAlignment="Center" HorizontalContentAlignment="Center">事件触发器</Label>
        
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="100">
        <Button Height="23" Name="button1" Width="75">stop</Button>
        <Button Height="23" Name="button2" Width="75">Resume</Button>
        <Button Height="23" Name="button3" Width="75">Seek</Button>
            <Button Height="23" Name="button4" Width="75">Skip</Button>
            <Button Height="23" Name="button5" Width="75">SetSpeed</Button>
        </StackPanel>
        
        <StackPanel.Triggers>
            <EventTrigger RoutedEvent="Mouse.MouseEnter" SourceName="label3">
                <EventTrigger.Actions>
                    <BeginStoryboard Name="ExpendWidth">
                        <Storyboard>
                            <DoubleAnimation Duration="0:0:10" Storyboard.TargetProperty="Width" To="400" Storyboard.TargetName="label3" ></DoubleAnimation>
                            <DoubleAnimation Duration="0:0:10" Storyboard.TargetProperty="Height" To="300" Storyboard.TargetName="label3" AutoReverse="True"></DoubleAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger RoutedEvent="Mouse.MouseLeave" SourceName="label3">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Width" Storyboard.TargetName="label3"></DoubleAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click" SourceName="button1">
                <PauseStoryboard BeginStoryboardName="ExpendWidth"></PauseStoryboard>
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click" SourceName="button2">
                <ResumeStoryboard BeginStoryboardName="ExpendWidth"></ResumeStoryboard>
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click" SourceName="button3">
                <SeekStoryboard BeginStoryboardName="ExpendWidth" Offset="0:0:0" Origin="BeginTime"></SeekStoryboard>
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click" SourceName="button4">
                <SkipStoryboardToFill BeginStoryboardName="ExpendWidth" />
            </EventTrigger>
            <EventTrigger RoutedEvent="Button.Click" SourceName="button5">
                <SetStoryboardSpeedRatio SpeedRatio="3" BeginStoryboardName="ExpendWidth" />
            </EventTrigger>
        </StackPanel.Triggers>
    </StackPanel>
</Window>

posted on 2010-03-26 16:08  大狼熙熙  阅读(3423)  评论(0编辑  收藏  举报