我有以下课程:
public class BindableClock : DependencyObject, INotifyPropertyChanged
{
private DoubleAnimation animation = new DoubleAnimation
{
From = 0.0d,
To = 10.0d,
Duration = new Duration(TimeSpan.FromDays(1d)),
BeginTime = TimeSpan.Zero
};
private Storyboard storyboard = new Storyboard { Duration = Duration.Automatic };
public double BogusDouble
{
get { return (double)GetValue(BogusDoubleProperty); }
set { SetValue(BogusDoubleProperty, value); }
}
// Using a DependencyProperty as the backing store for BogusDouble. This enables animation, styling, binding, etc...
public static readonly DependencyProperty BogusDoubleProperty =
DependencyProperty.Register("BogusDouble", typeof(double), typeof(BindableClock), new PropertyMetadata(0.0d, BogusDoubleChangedCallback));
public static void BogusDoubleChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var clock = d as BindableClock;
clock.TimeSpan = clock.storyboard.GetCurrentTime();
}
public TimeSpan TimeSpan {get; set;}
public BindableClock(bool start)
{
Storyboard.SetTarget(animation, this);
Storyboard.SetTargetProperty(animation, "BogusDouble");
storyboard.Children.Add(animation);
Value = TimeSpan.ToString(Format);
if (start)
storyboard.Begin();
}
public void Begin()
{
storyboard.Begin();
}
public void Stop()
{
storyboard.Stop();
}
}
我期待,在我运行Begin()
方法之后,BogusDouble
属性会更新几次,并且BogusDoubleChangedCallback
每次都会上升。但事实并非如此。
知道为什么吗?