2017-10-15 88 views
0

我已经写了静态动画动态DoubleAnimationUsingKeyFrames与DoubleAnimationUsingKeyFrames如何编写C#和XAML

<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#。 我该怎么做?

回答

1
<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; 
} 
+0

如果是UWP你也可以使用“X:绑定”,而不是绑定这是强类型的,有Intellisense据说具有更好的性能。 –