我有一个包含内部网格的按钮:
<Button>
<Grid Name="grid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Name="txt0" Grid.Row="0" Text="Text0"/>
<TextBlock Name="txt1" Grid.Row="1" Text="Text1"/>
</Grid>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="grid"
Storyboard.TargetProperty="Height"
From="{Binding ElementName=grid, Path=ActualHeight}"
To="{Binding ElementName=txt0, Path=ActualHeight}"
Duration="0:0:1"
FillBehavior="HoldEnd"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
单击 Button 时,应折叠 Grid 以仅显示第一行中的文本。这部分工作正常。当我再次单击折叠的 Button 时,会发生奇怪的行为:它展开回其初始大小(两行可见),然后再次折叠到一行高度。似乎 Grid 的 ActualHeight 在动画期间和动画完成后保持不变。
所以我有两个问题:
1)为什么网格的实际高度没有改变,尽管网格的大小在视觉上发生了变化。
2)如果我为第二行设置 Height="*",我可以实现所需的行为。为什么在这种情况下 Grid 的 ActualHeight 会改变?
任何信息,将不胜感激。