Анимация WPF кнопок изнутри стиля - PullRequest
0 голосов
/ 13 апреля 2010

В настоящее время я пытаюсь анимировать кнопки на моих формах с помощью WPF - это часть университетского курса, поэтому все дело в демонстрации знаний, а не в том, чтобы хорошо выглядеть.

Нам показали, как анимировать для каждой кнопки, но так как я хочу, чтобы анимация была одинаковой на каждой кнопке, я использую стиль - что-то, чему нас не учили, и для которого поиск документации похож на свидетельство большой ноги, ИМО.

Пока мой код такой:

 <Style TargetType="{x:Type Button}" x:Key="ButtonAnimation">
            <Style.Triggers>
                <EventTrigger RoutedEvent="Button.Click">
                    <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Angle"
                                                 To="360" Duration="0:0:1"
                                                 FillBehavior="Stop" />
                        </Storyboard>
                    </BeginStoryboard>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="ScaleY"
                                                 To="0.1" Duration="0:0:0.5"
                                                 FillBehavior="Stop" AutoReverse="True" />
                        </Storyboard>
                    </BeginStoryboard>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="ScaleX"
                                                 To="0.1" Duration="0:0:0.5"
                                                 FillBehavior="Stop" AutoReverse="True" />
                        </Storyboard>
                    </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>    

Значения TargetProperty = "" неверны, и я не могу найти в Интернете нигде, демонстрирующей, что должно быть там. В настоящее время есть значения, которые вы бы имели, если бы анимация применялась к каждой кнопке, а не к стилю.

Как мне заставить это работать? Что такое правильный TargetProperty?

1 Ответ

3 голосов
/ 13 апреля 2010

Я думаю, что это ...

Storyboard.TargetProperty="Angle"

... должно быть ...

Storyboard.TargetProperty="(Button.RenderTransform).(RotateTransform.Angle)"

И другие:

Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleY)"
Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleX)"

Возможно, вам придется заменить RenderTransform на LayoutTransform, в зависимости от того, что вы используете в разметке.

Однако, это будет работать, только если у вас есть только одно из двух преобразований, то есть RotateTransform или ScaleTransform. Если у вас есть их в TransformGroup, все становится еще сложнее. Если вы определили RotateTransform как первый дочерний элемент, а ScaleTransform как второй дочерний элемент TransformGroup, то это должно сработать (не проверено):

(Button.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)
(Button.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.X)
(Button.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.Y)

Однако вы должны быть осторожны, когда меняете порядок трансформаций или удаляете одно из них, потому что это нарушит вашу анимацию ...

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...