扩展后被展开

时间:2015-10-30 09:47:03

标签: wpf storyboard expander eventtrigger

我正在使用storyboard和eventTrigger来触发很多事件,当tab被Clicked有效时,但是在扩展器扩展后,Expander在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>

1 个答案:

答案 0 :(得分:0)

你的FillBehavior =“HoldEnd”意味着你无法从代码中更改属性,因为它是由StoryBoard保留的。

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

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

private void animation_Completed(object sender, EventArgs e)
{
  bool isexpanded = Exp1.IsExpanded;
  Exp1.BeginAnimation(Expander.IsExpandedProperty, null);
  Exp1.IsExpanded = isexpanded;
}

其中Exp1是您的Expander

您获取值,停止动画然后将值返回。 它运作良好。

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