绑定"From",“To"属性设置为控件高度

本文关键字:quot 设置 高度 属性 控件 From 绑定 To | 更新日期: 2023-09-27 18:05:56

我想做的是:我有一个文本块(其大小不固定)内的网格。当用户按下按钮时,我希望网格的高度动画为文本块的大小,显示文本块的所有内容。

这是带有网格和文本块的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,使网格更小,而不是更大:/

绑定"From",“To"属性设置为控件高度

最后,我通过c#解决了这个问题。当Textblock SizeChanged事件触发时,执行以下代码:

myGrid.Visibility = Visibility.Visible;
DBED.To = DESCRIPTION.ActualHeight + 4;
DBED2.From = DESCRIPTION.ActualHeight + 4;

DBED和DBED2为双动画。+4只是为了留一点边距,这样文字就不会被剪掉。

我怀疑通过xaml处理这个不工作,因为ActualHeight属性得到测量之前任何渲染,使其值等于0

相关文章: