在故事板将IsExpanded设置为true后,扩展器卡住了

时间:2015-07-14 18:40:05

标签: wpf xaml storyboard expander

所以我有一个扩展器,我想要具有正常的功能(打开和关闭它自己的按钮)但我也想要一个不同的按钮来按下时展开它(这个按钮位于扩展器的标题中)。我在Button.Click的事件触发器中使用故事板,但是在以这种方式扩展之后,普通按钮不起作用,它只是保持扩展。我的xaml在下面,我真的更喜欢将这一切保留在xaml中,我可以想出一种在codebehind / viewmodel中自己做的方法。

D

1 个答案:

答案 0 :(得分:0)

好吧,对于跟随我的脚步的人来说,这就是我的所作所为。我从here得到了这个想法,并对其进行了调整,直到它正常工作。

<Expander.Triggers>
    <EventTrigger SourceName="btnAddCol" RoutedEvent="Button.Click">
        <BeginStoryboard x:Name="ColumnExpanderStory">
            <Storyboard>
                <BooleanAnimationUsingKeyFrames Storyboard.TargetName="ColumnExpander" Storyboard.TargetProperty="IsExpanded">
                    <DiscreteBooleanKeyFrame KeyTime="0" Value="True" />
                </BooleanAnimationUsingKeyFrames>
             </Storyboard>
         </BeginStoryboard>
     </EventTrigger>
     <EventTrigger RoutedEvent="ToggleButton.PreviewMouseUp">
         <RemoveStoryboard BeginStoryboardName="ColumnExpanderStory" />
     </EventTrigger>
  </Expander.Triggers>
<Expander.Header>

问题是故事板覆盖了对IsExpanded属性的任何其他绑定,因此必须将其删除才能恢复它们(阅读更多here)。建议是使用ToggleButton.Checked事件删除故事板,但这对我没有用,只有&#34;预览&#34;事件似乎有正确的时机。我从PreviewMouseDown开始,但它会删除故事板,然后在鼠标上切换扩展器,这意味着第一次点击只会快速地来回翻转状态。使用PreviewMouseUp解决了这个问题。