В анимации WPF установите свойство BeginTime для статического ресурса. - PullRequest
3 голосов
/ 19 октября 2011

То, что я хочу сделать, это определить все начальные сроки моей анимации, используя ресурс.

Например, я хочу:

<sys:TimeSpan x:key="SomeResource">... </sys:TimeSpan>

...

<DoubleAnimation BeginTime={StaticResource SomeResource}/>

Очевидно, sys: TimeSpan не правильный тип для использования. Как мне определить свой ресурс, чтобы я мог ссылаться на него как на ресурс при определении моей анимации?

Я также хочу сделать это исключительно в XAML.

Спасибо.

1 Ответ

3 голосов
/ 19 октября 2011

System.TimeSpan - правильный тип для использования, поскольку это тип BeginTime. Вы также можете сделать то же самое для Duration (но вместо этого использовать тип System.Windows.Duration).

Вот пример использования StaticResource в анимации (через 2 секунды исчезает в течение 1 секунды):

    <Button Content="Placeholder"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Opacity="0.5">
        <Button.Resources>
            <sys:TimeSpan x:Key="FadeInBeginTime">0:0:2</sys:TimeSpan>
            <Duration x:Key="FadeInDuration">0:0:1</Duration>
        </Button.Resources>
        <Button.Style>
            <Style>
                <Style.Triggers>
                    <EventTrigger RoutedEvent="UIElement.MouseEnter">
                        <BeginStoryboard x:Name="FadeInBeginStoryBoard">
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                                 To="1"
                                                 BeginTime="{StaticResource FadeInBeginTime}"
                                                 Duration="{StaticResource FadeInDuration}" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                    <EventTrigger RoutedEvent="UIElement.MouseLeave">
                        <StopStoryboard BeginStoryboardName="FadeInBeginStoryBoard" />
                    </EventTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

Предполагается, что вы объявили пространство имен sys как:

    xmlns:sys="clr-namespace:System;assembly=mscorlib"

Надеюсь, это поможет!

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