Анимированная шкала ContentControl - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь анимировать свойство Масштаб X и Y ContentControl. Это мой код:

// Конструктор MainWindow:

        ScaleTransform scale = new ScaleTransform(0, 0);
        ModalControl.LayoutTransform = scale;
        ModalControl.UpdateLayout();

// код анимации

        Dispatcher.Invoke(()=> {
            var anim = new DoubleAnimation {
                From = 0,
                To = 1,
                Duration = TimeSpan.FromMilliseconds(250)
            };

            var scaleXAnim = new DoubleAnimation {
                From = 0,
                To = 1,
                Duration = TimeSpan.FromMilliseconds(250)
            };

            ModalControl.BeginAnimation(OpacityProperty, anim); // this works
            ModalControl.BeginAnimation(ScaleTransform.ScaleXProperty, scaleXAnim); // this doesn't
            ModalControl.BeginAnimation(ScaleTransform.ScaleYProperty, scaleXAnim);

            Console.WriteLine("Animation called");

        });

XAML

    <ContentControl x:Name="ModalControl" Grid.RowSpan="4" Grid.ColumnSpan="2" Panel.ZIndex="100" Visibility="Visible" Opacity="0"  Content="{StaticResource ModalElement}" Background="Red">

Я не уверен, что я скучаю. Когда анимация непрозрачна, она работает как положено, но масштабирование более проблематично. Есть идеи, что еще нужно сделать?

1 Ответ

3 голосов
/ 21 февраля 2020

Элемент управления не имеет свойства ScaleX и ScaleY.

Необходимо анимировать свойства объекта ScaleTransform в LayoutTransform элемента управления:

ModalControl.LayoutTransform.BeginAnimation(
    ScaleTransform.ScaleXProperty, scaleXAnim);

ModalControl.LayoutTransform.BeginAnimation(
    ScaleTransform.ScaleYProperty, scaleXAnim);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...