如何使用带有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;
}