繁体   English   中英

WPF:网格的ActualHeight不变

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM