Остановить раскадровку после запуска в wpf - PullRequest
1 голос
/ 23 апреля 2020

Я использовал раскадровку для мигания Image. Я определил раскадровку в XAML:

<UserControl.Resources>
    <Storyboard x:Key="AnimateFlicker" RepeatBehavior="Forever">
        <DoubleAnimation Storyboard.TargetProperty="Opacity"
                 From="0"
                 To="1"
                 AutoReverse="True"
                 BeginTime="0:0:1"
                 Duration="0:0:0.08" />
        <DoubleAnimation Storyboard.TargetProperty="Opacity"
                 From="1"
                 To="1"
                 AutoReverse="True"
                 Duration="0:0:0.4" />
        <DoubleAnimation Storyboard.TargetProperty="Opacity"
                 From="1"
                 To="0"
                 AutoReverse="True"
                 Duration="0:0:0.08" />
    </Storyboard>
</UserControl.Resources>

В своем коде я использовал этот код для запуска раскадровки:

private void Blink(bool blink)
    {

        Storyboard storyboard = TryFindResource("AnimateFlicker") as Storyboard;
        if (blink)
        {
            if (storyboard != null)
            {
                imgState.BeginStoryboard(storyboard, HandoffBehavior.SnapshotAndReplace, true);
            }
        }
        else
        {
            storyboard.Stop(); //this line wont work and blinking continues.
        }
    }

Но, как я уже упоминал в своем коде storyboard.Stop() не работает и мигание продолжается. Как я могу перестать мигать после запуска?

1 Ответ

1 голос
/ 23 апреля 2020

Вызовите Storyboard.Begin, а затем Storyboard.Pause или Storyboard.Pause в зависимости от того, хотите ли вы, чтобы свойство анимированной цели все еще было затронуто:

private void Blink(bool blink)
{
    Storyboard storyboard = TryFindResource("AnimateFlicker") as Storyboard;
    if (blink)
    {
        if (storyboard != null)
        {
            storyboard.Begin(imgState, HandoffBehavior.SnapshotAndReplace, true);
        }
    }
    else
    {
        storyboard.Pause(imgState);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...