如何使用带有c#和xaml的关键帧编写动态双重动画

如何使用带有c#和xaml的关键帧编写动态双重动画,c#,visual-studio,xaml,uwp,C#,Visual Studio,Xaml,Uwp,我已经使用关键帧编写了带有双动画的静态动画: <Storyboard x:Name="MyCount" Completed="MyCount_Completed"> <DoubleAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetName="MyProgressBar" Storyboard.TargetProperty="(RangeBase.Value)"

我已经使用关键帧编写了带有双动画的静态动画:

<Storyboard x:Name="MyCount" Completed="MyCount_Completed">
            <DoubleAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetName="MyProgressBar" Storyboard.TargetProperty="(RangeBase.Value)">
                <DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="100"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:1" Value="90"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:2" Value="80"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:3" Value="70"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:4" Value="60"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:5" Value="50"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:6" Value="40"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:7" Value="30"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:8" Value="20"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:9" Value="10"/>
                <DiscreteDoubleKeyFrame KeyTime="0:0:10" Value="0"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>

现在我想用c#使这段代码(值和时间部分)动态化。 我该怎么做呢?

如果是UWP,你也可以使用“x:Bind”来代替强类型的、具有智能感知的、据说性能更好的绑定。
    <Storyboard x:Name="MyCount" Completed="MyCount_Completed">
        <DoubleAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetName="MyProgressBar" Storyboard.TargetProperty="(RangeBase.Value)">
        <DiscreteDoubleKeyFrame KeyTime="{Binding MyStoryboardTimeKeyframeA}" Value="{Binding MyStoryboardValueKeyframeA}"/>
    </DoubleAnimationUsingKeyFrames>
public class MyViewModel : INotifyPropertyChanged
{
    private double _myStoryboardValueKeyframeA;
    public double MyStoryboardValueKeyframeA
    {
        get
        {
            return _myStoryboardValueKeyframeA;
        }
        set
        {
            _myStoryboardValueKeyframeA = value;
            OnPropertyChanged("MyStoryboardValueKeyframeA");
        }
    }

    private TimeSpan _myStoryboardTimeKeyframeA;
    public TimeSpan MyStoryboardTimeKeyframeA
    {
        get
        {
            return _myStoryboardTimeKeyframeA;
        }
        set
        {
            _myStoryboardTimeKeyframeA = value;
            OnPropertyChanged("MyStoryboardTimeKeyframeA");
        }
    }

    protected void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, e);
    }

    public void OnPropertyChanged(string propertyName)
    {
        OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
    }

    public event PropertyChangedEventHandler PropertyChanged;
}