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