WPF:如何将DragEnter EventTrigger添加到我的Style

时间:2018-03-15 16:33:49

标签: wpf styles eventtrigger

所以我有这个按钮Style

<Style x:Key="ButtonDefaultStyleDrop" TargetType="{x:Type Button}" BasedOn="{StaticResource MetroFlatButton}" >
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border TextBlock.Foreground="{TemplateBinding Foreground}"
                        x:Name="Border"
                        CornerRadius="5"
                        Background="{TemplateBinding Background}"
                        BorderThickness="1">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualStateGroup.Transitions>
                                <VisualTransition GeneratedDuration="0:0:0.5" />
                                <VisualTransition GeneratedDuration="0" To="Pressed" />
                            </VisualStateGroup.Transitions>
                            <VisualState x:Name="Normal" />
                            <VisualState x:Name="MouseOver">
                            </VisualState>
                            <VisualState x:Name="Pressed">
                            </VisualState>
                            <VisualState x:Name="Disabled">
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <ContentPresenter Margin="2"
                                      HorizontalAlignment="Center"
                                      VerticalAlignment="Center"
                                      RecognizesAccessKey="True" />
                    <Border.BorderBrush>
                        <DrawingBrush Viewport="8,8,8,8" ViewportUnits="Absolute" TileMode="Tile">
                            <DrawingBrush.Drawing>
                                <DrawingGroup>
                                    <GeometryDrawing Brush="#FF7AA0CD">
                                        <GeometryDrawing.Geometry>
                                            <GeometryGroup>
                                                <RectangleGeometry Rect="0,0,50,50" />
                                                <RectangleGeometry Rect="50,50,50,50" />
                                            </GeometryGroup>
                                        </GeometryDrawing.Geometry>
                                    </GeometryDrawing>
                                </DrawingGroup>
                            </DrawingBrush.Drawing>
                        </DrawingBrush>
                    </Border.BorderBrush>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="False">
                        <Setter TargetName="Border" Property="Background" Value="Transparent"/>
                        <Setter Property="Foreground" Value="#FF7AA0CD"/>
                        <Setter Property="BorderBrush" Value="#FF7AA0CD"/>
                        <Setter Property="BorderThickness" Value="1"/>
                        <Setter Property="FontSize" Value="22"/>
                    </Trigger>



                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

我想在Trigger时添加另一个DragEnter,而不是在后面的代码中使用它。

有可能吗? (我只想更改Border Background

1 个答案:

答案 0 :(得分:2)

您可以使用动画执行此操作:

<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="False">
        <Setter TargetName="Border" Property="Background" Value="Transparent"/>
        <Setter Property="Foreground" Value="#FF7AA0CD"/>
        <Setter Property="BorderBrush" Value="#FF7AA0CD"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="FontSize" Value="22"/>
    </Trigger>
    <EventTrigger RoutedEvent="DragEnter">
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation Storyboard.TargetName="Border"
                                Storyboard.TargetProperty="Background.Color" 
                                Duration="0:0:0" To="Green" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>