DoubleAnimation - На стартовом событии? - PullRequest
0 голосов
/ 19 февраля 2012

У меня определена раскадровка:

    <Grid.Resources>
        <Storyboard x:Key="MasterAnim" x:Name="MasterAnim" Duration="0:0:10" >
            <DoubleAnimation x:Name="ANIMATABLE_WidthExp"
                             Storyboard.TargetName="ANIMELEMENT_SboardRect1" 
                             Storyboard.TargetProperty="Width"
                             From="100" 
                             To="800" 
                             Duration="0:0:5" />

            <DoubleAnimation x:Name="ANIMATABLE_HeightExp"
                             Storyboard.TargetName="ANIMELEMENT_SboardRect1" 
                             Storyboard.TargetProperty="Height"
                             From="100" 
                             To="800" 
                             BeginTime="0:0:5"
                             Duration="0:0:5" />
        </Storyboard>

    </Grid.Resources>

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

1 Ответ

2 голосов
/ 19 февраля 2012

Событие Started отсутствует, но вы можете обрабатывать события CurrentTimeInvalidated, CurrentStateInvalidated и Completed в DoubleAnimation. CurrentStateInvalidated - это, вероятно, все, что вам нужно.

private void DoubleAnimationCurrentTimeInvalidated(object sender, EventArgs e)
{
    var clock = (AnimationClock) sender;

    Debug.WriteLine(string.Format("CurrentTime: state={0}, progress={1}, time={2}", clock.CurrentState, clock.CurrentProgress, clock.CurrentTime));
}

private void DoubleAnimationCurrentStateInvalidated(object sender, EventArgs e)
{
    var clock = (AnimationClock)sender;

    Debug.WriteLine(string.Format("CurrentState: state={0}", clock.CurrentState));
}

private void DoubleAnimationCompleted(object sender, EventArgs e)
{
    var clock = (AnimationClock) sender;

    Debug.WriteLine(string.Format("Completed: state={0}", clock.CurrentState));
}

Игнорируя текущее время, мы получаем

  CurrentState: state=Active

  CurrentState: state=Filling

  Completed: state=Filling

при запуске анимации.

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