DoubleAnimation不会更新DependencyProperty

时间:2013-03-23 12:25:07

标签: c# storyboard windows-store-apps dependency-properties

我有以下课程:

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

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

故事板的持续时间应该是一天?我认为这需要一些时间,直到第一次改变发生。或者我在这里想念一些东西......?