2015-04-17 3 views
0

У меня есть этот код:SetValue метод не работает после того, как DoubleAnimation

public partial class MainWindow : Window 
{ 

    Storyboard st_common = new Storyboard(); 
    DoubleAnimation anim1 = new DoubleAnimation();   

    public MainWindow() 
    { 
     InitializeComponent();    
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 

     anim1.Duration = new Duration(TimeSpan.FromSeconds(5)); 
     anim1.From = 10.0; 
     anim1.To = 100.0; 
     st_common.Children.Add(anim1); 
     Storyboard.SetTargetName(anim1, r1.Name); 
     Storyboard.SetTargetProperty(anim1, new PropertyPath(Canvas.TopProperty)); 
     st_common.Begin(this); 

    } 

    private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     r1.SetValue(Canvas.TopProperty, 300.0);    
     r2.SetValue(Canvas.TopProperty, 300.0); 
    } 
} 

Почему SetValue метод не работает для г1 элемента после анимации? (r1 и r2 - прямоугольники)

+0

У вас есть кнопки Button_Click() и Button_Click_1, которые выглядят, возможно, у вас есть один из этих обработчиков событий, которые больше не связаны с событием кнопки? Сколько кнопок на форме? Что такое r1 и r2? – Mangist

+0

Тег C# указывает всем, что это C#, плюс это более или менее ясно из синтаксиса. Исправлена ​​некоторая пунктуация. – djv

ответ

0

Анимация раскадровки по-прежнему удерживает значение, на котором изображено последнее анимированное значение. Это известная «особенность», и есть три пути вокруг него ...

  1. Установите анимацию FillBehavior Остановить
  2. Удалить раскадровка
  3. Удалите всю анимацию.

См. https://msdn.microsoft.com/en-us/library/aa970493%28v=vs.110%29.aspx о том, как формировать эти действия.

+0

Первый и третий путь приводит к тому, что прямоугольник r1 возвращается в исходное местоположение, которое было до анимации. Второй способ не влияет. Есть идеи? –

Смежные вопросы