WPF Animation К динамическому значению - PullRequest
0 голосов
/ 11 октября 2018

Я хочу время от времени показывать UserControl.

Когда видимость UserControl меняется на видимую, она должна уменьшаться с умеренной скоростью.

Я понял, как это сделатьв основном:

<UserControl.Resources>
    <Style TargetType="{x:Type UserControl}" x:Key="MyStyleName">            
        <Style.Triggers>
            <Trigger Property="Visibility" Value="Visible">
                <Trigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>                                
                            <DoubleAnimation Storyboard.TargetProperty="Height" From="0.0" To="200.0" Duration="0:0:1" />
                        </Storyboard>
                    </BeginStoryboard>
                </Trigger.EnterActions>
            </Trigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

Это прекрасно работает.

В реальном приложении я не знаю точного значения свойства Height, потому что UserControl "размещен" в Gridи высота строки установлена ​​на «Авто».

Я пытался сделать привязку к TemplatedParent, не работает.Привязка к RelativeSource также не работает.

Кто-нибудь может мне помочь, пожалуйста?

Спасибо!

1 Ответ

0 голосов
/ 11 октября 2018

В качестве альтернативы, анимируйте ScaleTransform в RenderTransform элемента управления:

<Style TargetType="UserControl">
    <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
    <Setter Property="RenderTransform">
        <Setter.Value>
            <ScaleTransform ScaleY="0"/>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="Visibility" Value="Visible">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation To="1" Duration="0:0:1" 
                            Storyboard.TargetProperty="RenderTransform.ScaleY"/>
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
        </Trigger>
    </Style.Triggers>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...