绑定"来自" &安培; "至"属性到控制高度

时间:2015-08-01 12:42:55

标签: c# xaml data-binding windows-10 doubleanimation

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

这是带有网格和文本块(简化)的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的相当奇怪的行为,使网格变小,而不是更大:/

1 个答案:

答案 0 :(得分:0)

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

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

DBED和DBED2是DoubleAnimations。 +4只是有一点余量,因此文本不会被剪掉。

我怀疑通过xaml处理这个问题是行不通的,因为在渲染任何内容之前会测量ActualHeight属性,使得它的值等于0。