将 "From" & "To" 属性绑定到控件高度
Binding the "From" & "To" properties to a control height
这是我正在尝试做的事情:
我在网格内有一个文本块(其大小不固定)。我希望网格的高度在用户按下按钮时根据文本块的大小进行动画处理,从而显示文本块的所有内容。
这是带有网格和文本块(已简化)的 xaml:
<Grid x:Name="mygrid" ScrollViewer.VerticalScrollBarVisibility="Disabled" Height="38" Margin="10,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBlock MaxWidth="400" x:Name="mytextblock" HorizontalAlignment="Left" Margin="10,0" TextWrapping="WrapWholeWords" VerticalAlignment="Top" FontSize="10.667" Foreground="#BFFFFFFF" Text="reallylongtextgoeshere"/>
</Grid>
这是我当前的代码:
<Storyboard x:Name="ExtendDescription">
<DoubleAnimation x:Name="DBED" Duration="00:00:00.6" Storyboard.TargetProperty="Height" EnableDependentAnimation="True" From="0" To="{Binding ElementName=mytextblock, Path=ActualHeight}" Storyboard.TargetName="mygrid">
<DoubleAnimation.EasingFunction>
<CircleEase EasingMode="EaseInOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
我花了大约一个小时的时间寻找解决方案,但我想出的任何一个都没有奏效。关于如何使它正常工作的任何想法?目前动画有一个相当奇怪的行为,将高度动画化为 0,使网格变小,而不是变大:/
最后,我通过 C# 处理这个问题来解决这个问题。当 Textblock SizeChanged 事件触发时,将执行以下代码:
myGrid.Visibility = Visibility.Visible;
DBED.To = DESCRIPTION.ActualHeight + 4;
DBED2.From = DESCRIPTION.ActualHeight + 4;
DBED 和 DBED2 是双动画。 +4 只是有一点边距,这样文本就不会被剪掉。
我怀疑通过 xaml 处理此问题不起作用,因为 ActualHeight 属性 在渲染任何内容之前进行测量,使其值等于 0。
这是我正在尝试做的事情: 我在网格内有一个文本块(其大小不固定)。我希望网格的高度在用户按下按钮时根据文本块的大小进行动画处理,从而显示文本块的所有内容。
这是带有网格和文本块(已简化)的 xaml:
<Grid x:Name="mygrid" ScrollViewer.VerticalScrollBarVisibility="Disabled" Height="38" Margin="10,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBlock MaxWidth="400" x:Name="mytextblock" HorizontalAlignment="Left" Margin="10,0" TextWrapping="WrapWholeWords" VerticalAlignment="Top" FontSize="10.667" Foreground="#BFFFFFFF" Text="reallylongtextgoeshere"/>
</Grid>
这是我当前的代码:
<Storyboard x:Name="ExtendDescription">
<DoubleAnimation x:Name="DBED" Duration="00:00:00.6" Storyboard.TargetProperty="Height" EnableDependentAnimation="True" From="0" To="{Binding ElementName=mytextblock, Path=ActualHeight}" Storyboard.TargetName="mygrid">
<DoubleAnimation.EasingFunction>
<CircleEase EasingMode="EaseInOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
我花了大约一个小时的时间寻找解决方案,但我想出的任何一个都没有奏效。关于如何使它正常工作的任何想法?目前动画有一个相当奇怪的行为,将高度动画化为 0,使网格变小,而不是变大:/
最后,我通过 C# 处理这个问题来解决这个问题。当 Textblock SizeChanged 事件触发时,将执行以下代码:
myGrid.Visibility = Visibility.Visible;
DBED.To = DESCRIPTION.ActualHeight + 4;
DBED2.From = DESCRIPTION.ActualHeight + 4;
DBED 和 DBED2 是双动画。 +4 只是有一点边距,这样文本就不会被剪掉。
我怀疑通过 xaml 处理此问题不起作用,因为 ActualHeight 属性 在渲染任何内容之前进行测量,使其值等于 0。