Создать раскадровку из кода позади в Uwp - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу создать раскадровку из кода позади, я хочу добиться ниже Раскадровка из кода позади,

 <Storyboard x:Name="Counter_Animation">
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="txtCounter" Storyboard.TargetProperty="(TextBlock.Text)">
            <DiscreteObjectKeyFrame KeyTime="00:00:01" Value="2"/>
            <DiscreteObjectKeyFrame KeyTime="00:00:02" Value="1"/>
            <DiscreteObjectKeyFrame KeyTime="00:00:03" Value="0"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>

На моей странице есть текстовый блок с именем txtCounter, я пытался добиться этого из кода ниже, как показано ниже,

private void CounterAnimation()
    {

        Storyboard storyboard = new Storyboard();
        ObjectAnimationUsingKeyFrames anim = new ObjectAnimationUsingKeyFrames();
        anim.BeginTime = TimeSpan.FromSeconds(0);
        DiscreteObjectKeyFrame keyFrames = new DiscreteObjectKeyFrame();
        keyFrames.KeyTime = TimeSpan.FromSeconds(1);
        keyFrames.Value = "2";
        keyFrames.KeyTime = TimeSpan.FromSeconds(2);
        keyFrames.Value = "1";
        keyFrames.KeyTime = TimeSpan.FromSeconds(3);
        keyFrames.Value = "0";
        anim.KeyFrames.Add(keyFrames);

        Storyboard.SetTarget(anim, txtCounter);
        Storyboard.SetTargetProperty(anim, "Text");

        storyboard.Children.Add(anim);

        storyboard.Begin();
    }

Code Скомпилируйте и запустите код, проблема в том, что на ключевом времени 1 txtCounter должен показывать 2, на ключевом времени 2 txtCounter должен показывать 1, на ключевом времени 3 txtCounter должен показывать 0 но он прямо показывает мне 0 (ie не показывает промежуточные значения). Пожалуйста, посмотрите и исправьте меня, если я делаю какую-либо ошибку. Это поможет. Спасибо

1 Ответ

0 голосов
/ 27 апреля 2020

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

private Storyboard GetCounterAnimation()
    {

        Storyboard storyboard = new Storyboard();
        ObjectAnimationUsingKeyFrames counterAnimation = new ObjectAnimationUsingKeyFrames
        {
            BeginTime = TimeSpan.FromSeconds(0),
        };
        counterAnimation.KeyFrames.Add(new DiscreteObjectKeyFrame { KeyTime = TimeSpan.FromSeconds(1), Value = "2" });
        counterAnimation.KeyFrames.Add(new DiscreteObjectKeyFrame { KeyTime = TimeSpan.FromSeconds(2), Value = "1" });
        counterAnimation.KeyFrames.Add(new DiscreteObjectKeyFrame { KeyTime = TimeSpan.FromSeconds(3), Value = "Inhale" });
        Storyboard.SetTarget(counterAnimation, txtCounter);
        Storyboard.SetTargetProperty(counterAnimation, "Text");
        storyboard.Children.Add(counterAnimation);
        return storyboard;
    }
...