[英]WPF - How to get ActualHeight of ContentControl's content?
[英]WPF: Grid's ActualHeight is not changed
我有一个按钮,其中包含一个网格:
<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的ActualHeight保持不变。
所以我有两个问题:
1)为什么在网格上的ActualHeight不变,尽管在视觉上改变了网格的大小。
2)如果将第二行设置Height =“ *”,则可以实现所需的行为。 为什么在这种情况下,Grid的ActualHeight会更改?
任何信息,将不胜感激。
在将行高设置为自动的设置中,网格的ActualHeight至少应为TextBlocks的高度之和。 因此,当您将其动画化为较小的值时,ActualHeight不会更改,但是使用Height属性设置了要渲染的网格的大小。 实际上,您看到的是裁剪后的网格未调整大小。
使用Height =“ *”可以工作,因为网格的大小至少只有第一个TextBlock的大小。 但是,如果将其动画为0,则将具有相同的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.