我正在使用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>
答案 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
。
您获取值,停止动画然后将值返回。 它运作良好。
这不是唯一的方法,但我正在为自己的知识做一些测试。