【发布时间】:2017-08-31 17:55:42
【问题描述】:
我有一个故事板,当按下 ToggleButton 但 Grid 的高度是硬编码时,我可以使用它来更改 Grid 的大小。如何根据其他元素设置其高度,但还要为其添加额外的像素?更具体地说,我希望 Grid 在折叠时为 50pt,但在展开时应为 50pt+另一个元素的高度(将显示在 Grid 中的额外空间中)。
<Style TargetType="{x:Type Grid}" x:Key="ExpandCollapseTopBar">
<Style.Triggers>
<EventTrigger RoutedEvent="ToggleButton.Checked">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Grid.Height)" From="50.0" To="100.0" Duration="0:0:0.1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="ToggleButton.Unchecked">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Grid.Height)" From="100.0" To="50.0" Duration="0:0:0.1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
我会使用绑定到另一个元素的高度,但我无法添加额外的像素。
Height="{Binding ElementName=TheOtherElement, Path=ActualHeight}"
【问题讨论】:
-
您可以定义一个转换器以应用于您的绑定:Height="{Binding ElementName=TheOtherElement, Path=ActualHeight, Converter={StaticResource YourConverter}" 然后将这些 50px 添加到转换器中。
-
该死,在情节提要属性中使用绑定似乎会使应用程序崩溃
-
是的:stackoverflow.com/questions/2186933/…。这就是为什么您应该按照我在回答中的建议以编程方式应用动画的另一个原因。