C# 触发事件后未返回原始值的DoubleAnimation高度不再被触发

C# 触发事件后未返回原始值的DoubleAnimation高度不再被触发,c#,wpf,xaml,styles,storyboard,C#,Wpf,Xaml,Styles,Storyboard,我试图在我的列表框中添加一些样式,当创建列表框时,它有一个项目的大小,当鼠标结束时,它应该增加其高度以适合5个项目,到目前为止还不错,但由于当用户将鼠标移到列表框上以转到另一个字段时,它会变得很烦人,看着它长大并恢复到原来的尺寸,它会感到恼火 所以我决定尝试在这个列表框中使用双动画的故事板。我做到了这一点: <Style TargetType="ListBox"> <Setter Property="VerticalAlignment" Value="T

我试图在我的列表框中添加一些样式,当创建列表框时,它有一个项目的大小,当鼠标结束时,它应该增加其高度以适合5个项目,到目前为止还不错,但由于当用户将鼠标移到列表框上以转到另一个字段时,它会变得很烦人,看着它长大并恢复到原来的尺寸,它会感到恼火

所以我决定尝试在这个列表框中使用双动画的故事板。我做到了这一点:

    <Style TargetType="ListBox">
        <Setter Property="VerticalAlignment" Value="Top" />
        <Setter Property="Height" Value="20" />
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Trigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard BeginTime="0:0:.25">
                            <DoubleAnimation Storyboard.TargetProperty="Height" From="20" To="85" Duration="0:0:0"/>
                        </Storyboard>
                    </BeginStoryboard>
                </Trigger.EnterActions>
                <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
            </Trigger>
        </Style.Triggers>
    </Style>

好的,行了。太好了,我已经感觉自己是职业选手了。但是当我去参加考试时,我遇到了问题。当鼠标不再移动时,列表框将不会恢复到原来的大小。所以我决定反其道而行之,尝试使用
Property=“IsMouseOver”Value=“False”
切换到
值。列表框无法移动

因此,我尝试了一个在StackOverflow中看到的关于
DataTemplate.Triggers
的答案,但得到了相同的结果

我不知道还有什么可以尝试,因为我对WPF的缺乏知识每次都会妨碍我


有什么好的替代方案?提前感谢,欢迎发表意见。

触发器中使用额外的返回
情节提要

<Trigger.ExitActions>
    <BeginStoryboard>
        <Storyboard BeginTime="0:0:.25">
            <DoubleAnimation Storyboard.TargetProperty="Height"
                             From="85" To="20" Duration="0:0:0"/>
        </Storyboard>
    </BeginStoryboard>
</Trigger.ExitActions>

它工作得很好。谢谢。但只有一件事,当故事板被触发时,我的背景事件也不会被触发。有没有办法解决这个问题X提前感谢,非常感谢。你指的是什么背景事件?MouseLeave=“ListBox\u MouseLeave”在这个事件中,当ListBox的长度只能显示一个项目时,我只是让所选项目显示。如果鼠标位于ListBox上方并触发IsMouseOver,为什么会触发此事件?我已经试过了,如果鼠标离开列表框,它就会启动。预期行为。据我所知不是这样。很抱歉
<Style.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Trigger.EnterActions>
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetProperty="Height" From="20" To="85"
                                     Duration="0:0:0.5" FillBehavior="Stop" />
                </Storyboard>
            </BeginStoryboard>
        </Trigger.EnterActions>
        <Setter Property="Height" Value="85" />
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
    </Trigger>
</Style.Triggers>