0

我有以下课程:

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每次都会上升。但事实并非如此。

知道为什么吗?

4

1 回答 1

0

你的故事板的持续时间应该是一天?我认为这需要一些时间才能发生第一个变化。或者我在这里想念什么……?

于 2013-03-24T19:08:20.423 回答