【问题标题】:WPF animation issue on button click按钮单击时的 WPF 动画问题
【发布时间】:2012-05-29 13:59:13
【问题描述】:

我想在按钮的点击事件被触发之前显示一些按钮的动画。我正在使用以下 XAML 来实现这一点,但似乎Button.IsPressed 触发器在单击事件后被触发。

如何设置触发器,让它在点击事件之前先显示动画?

<Button x:Name="button" 
        Width="131" 
        Height="37" 
        Content="Button" 
        Margin="0,0,0,22" 
        Click="button_Click">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Style.Triggers>
                <Trigger Property="Button.IsPressed"  Value="True">
                    <Trigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Width"
                                                 From="130" 
                                                 To="0" 
                                                 Duration="0:0:2"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.ExitActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

编辑:我试过这个,但同样的事情。

<EventTrigger RoutedEvent="PreviewMouseLeftButtonDown">
    <BeginStoryboard>
        <Storyboard>
            <DoubleAnimation Storyboard.TargetProperty="Width" 
                             From="130" 
                             To="0" 
                             Duration="0:0:2"/>
        </Storyboard>
    </BeginStoryboard>
</EventTrigger>

【问题讨论】:

    标签: wpf animation button


    【解决方案1】:

    您没有提及您希望动画何时开始,但您可以尝试使用PreviewMouseLeftButtonDown

    【讨论】:

    • 基本删除列的datagrid按钮。所以在它被删除之前,我想显示一些动画(将按钮的宽度从 130 更改为 0),然后删除整列。动画完美无缺,唯一的事情是我必须在它进入代码后面删除实际列之前调用
    • 这听起来像是一个竞争条件。最好在后面的代码中启动动画并暂停执行,直到故事板完成。如果您不这样做,则可能会在动画结束之前删除该行。我不知道为此目的的正确事件/覆盖,但您可以尝试 OnExecutedDelete
    • 是的。我会试试的。谢谢
    猜你喜欢
    • 2016-03-02
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多