Wpf 膨胀机膨胀后卡住

Wpf 膨胀机膨胀后卡住,wpf,storyboard,expander,eventtrigger,Wpf,Storyboard,Expander,Eventtrigger,我正在使用故事板和eventTrigger在单击选项卡时触发许多事件,但在扩展程序展开后,在故事板将IsExpanded设置为true后,扩展程序被卡住 问题是我如何使扩展器折叠/扩展手册在通过故事板变为真实后再次生效 <Storyboard x:Key="Operation"> <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(IsExpanded)" Storyboard.T

我正在使用故事板和eventTrigger在单击选项卡时触发许多事件,但在扩展程序展开后,在故事板将IsExpanded设置为true后,扩展程序被卡住

问题是我如何使扩展器折叠/扩展手册在通过故事板变为真实后再次生效

<Storyboard x:Key="Operation">


            <BooleanAnimationUsingKeyFrames  Storyboard.TargetProperty="(IsExpanded)" Storyboard.TargetName="ExpanderAnetArticle" FillBehavior="HoldEnd">
                <DiscreteBooleanKeyFrame KeyTime="0" Value="True"/>
            </BooleanAnimationUsingKeyFrames>


        </Storyboard>

   </Window.Resources>

    <Window.Triggers>

<EventTrigger RoutedEvent="UIElement.MouseLeftButtonUp" SourceName="CtrlTiOperation">
            <BeginStoryboard x:Name="Operation_BeginStoryboard" Storyboard="{StaticResource Operation}"/>
            <BeginStoryboard x:Name="Tabfocus_BeginStoryboard" Storyboard="{StaticResource Tabfocus}"/>
        </EventTrigger>

您的FillBehavior=“HoldEnd”意味着您无法从代码更改属性,因为脚本保留了该属性

在前面对类似问题的回答中,我建议您为FillBehavior提供停止值,但这是错误的,因为使用停止时,该值将在动画结束时恢复

可以在动画中放置已完成的事件,如下所示:

private void animation_Completed(object sender, EventArgs e)
{
  bool isexpanded = Exp1.IsExpanded;
  Exp1.BeginAnimation(Expander.IsExpandedProperty, null);
  Exp1.IsExpanded = isexpanded;
}
其中Exp1是您的
扩展器

获取该值,停止动画,然后将该值放回原处。 它工作得很好


这不是唯一的方法,但我正在为自己的知识做一些测试。

我们需要查看所有XAML以帮助您,至少是扩展程序和相关控件/资源