使用 Storyboard 在 WPF 触发器中平滑 ExitAction

Smooth ExitAction in WPF Trigger using Storyboard

我有一个 WPF 应用程序,在这里我想覆盖丑陋的默认 WPF 样式。我已经创建了 Styles.xaml 字典,在这里我几乎完成了样式,但是动画和不同视觉状态(触发器)之间的平滑过渡存在一些问题。

我的挑战之一是我不想将任何 C# 事件处理程序或其他 C# 代码绑定到样式。

这里我提供一些关于触发器的代码:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsEnabled" Value="True" />
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsPressed" Value="False" />
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <BeginStoryboard Name="MouseOverStoryboard">
            <Storyboard Duration="0:0:0.25" SlipBehavior="Grow">
                <ColorAnimation Storyboard.TargetName="InnerBorder" 
                                Storyboard.TargetProperty="Background.(SolidColorBrush.Color)" 
                                To="{StaticResource White}" 
                                BeginTime="0:0:0" Duration="0:0:0.25" />
                <DoubleAnimation Storyboard.TargetName="InnerBorder" 
                                 Storyboard.TargetProperty="Opacity" 
                                 To="0.3" 
                                 BeginTime="0:0:0" Duration="0:0:0.25" />
            </Storyboard>
        </BeginStoryboard>
    </MultiTrigger.EnterActions>
    <MultiTrigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="MouseOverStoryboard" />
    </MultiTrigger.ExitActions>
</MultiTrigger>

为了让动画流畅,我添加了 EnterAction 并在此处放置 Storyboard 并带有时序,因此进入动画流畅且看起来不错。

我的第一个问题是执行 BeginStoryboard 时如何恢复默认颜色,但后来我意识到我可以使用 RemoveStoryboard。

现在我真的不知道我的想法出来了——如何制作流畅的退出动画?我不应该使用 RemoveStoryboard 吗?

请提供建议。谢谢

P. S. 我没有使用 VisualStateManager,因为缺少状态,我不想为此实现自己的控件。

添加一个在输入动作动画持续时间结束时开始的新动画对象如何? 或者通过添加一个 Storyboard 来恢复你的 EnterAction 来使用你的触发器的 ExitAction 属性 怎么样? 或者您可以尝试将 Fillbehavior 属性 设置为 'Stop...

另一种选择是使用 EventSetter 来捕获 RoutedEvents,例如 MouseEnterMouseLeave