none
Проблемы с анимацией Grid RowDefinition и ColumnDefinition RRS feed

  • Вопрос

  • Никаких стандартных средств анимации размеров Row(Column)Definition не нашел, поэтому решил сделать свой класс анимации.

    Вот он:

     

    class GridLengthAnimation : AnimationTimeline
    {
      private GridLength _from;
      private GridLength _to;
    
      public GridLength From
      {
        get { return _from; }
        set { _from = value; }
      }
      public GridLength To
      {
        get { return _to; }
        set { _to = value; }
      }
    
      public GridLengthAnimation() { }
    
      public override Type TargetPropertyType
      {
        get { return typeof(GridLength); }
      }
    
      public override object GetCurrentValue(object defaultOriginValue, object defaultDestinationValue, AnimationClock animationClock)
      {
        TimeSpan? current = animationClock.CurrentTime;
        return new GridLength(_from.Value + (_to.Value - _from.Value) / Duration.TimeSpan.Ticks * current.Value.Ticks, GridUnitType.Pixel);
      }
    
      protected override Freezable CreateInstanceCore()
      {
        return new GridLengthAnimation();
      }
    }
    
    

    Он работает, но почему-то установленные значения To и From сбрасываются к моменту первого же выполнения GetCurrentValue. Т.е. на строчке 27 они уже равны нулю. Наверное, причина какая-то простая, но голову сломал, не могу понять в чем дело...

    Есть мысли?

    30 марта 2011 г. 7:15

Ответы

  • Может дело в том что вы инстанс анимации постоянно перезапсываете, оесть предыдущие значения не сохраняються?
    например перед вычислениями всегда используете:

     protected override Freezable CreateInstanceCore()
     {
      return new GridLengthAnimation();
     }
    

    Don't forget to mark the correct answer Blog
    • Помечено в качестве ответа Abolmasov Dmitry 19 апреля 2011 г. 9:22
    30 марта 2011 г. 14:42

Все ответы

  • Может дело в том что вы инстанс анимации постоянно перезапсываете, оесть предыдущие значения не сохраняються?
    например перед вычислениями всегда используете:

     protected override Freezable CreateInstanceCore()
     {
      return new GridLengthAnimation();
     }
    

    Don't forget to mark the correct answer Blog
    • Помечено в качестве ответа Abolmasov Dmitry 19 апреля 2011 г. 9:22
    30 марта 2011 г. 14:42
  • Уважаемый пользователь, вам помог ответ Oleksandr Reminnyi? Если да - то отметьте его как ответ с помощью кнопки 'Пометить как ответ'. Если нет - то напишите о результатах и мы будем искать решение дальше. Спасибо.


    Для связи [mail]
    3 апреля 2011 г. 18:57
  • Abolmasov Dmitry

    Прошу прощения, только сейчас увидел, что у меня есть ответ. Почему-то мне не пришли уведомления об ответах. Кнопку 'Пометить как ответ' я не нашел. Еслди вы имеете ввиду кнопку 'полезное', то я ее нажал.

     

    19 апреля 2011 г. 9:03
  • Oleksandr Reminnyi

    Да, дело было в этом, я уже сам разобрался. Все равно спасибо!

    19 апреля 2011 г. 9:06