2014-09-03 3 views
0

Я пытаюсь создать программу моделирования, которая анимируется на основе ввода пользователя. Я запускаю ошибку, когда пытаюсь создать обработчик событий для события mystoryboard.completed. Я прочитал множество различных статей API и сообщений на форумах по обработке событий и раскадровки, но я не могу найти причину своей ошибки.Storyboard.Completed обработчик событий Предотвращение выполнения кода

Мой код компилируется, и окно отображается, но ничего после строки, в которой я настроил обработчик событий, не выполняется. Мой MainWindow, где я настроил все, показан ниже.

public MainWindow() 
     { 
      InitializeComponent(); 
      titleTextBlock.Text = "MainWindow()"; 
      //this.Loaded += new RoutedEventHandler(MainWindow_Loaded); 
     } 

     private void MainWindow_Loaded(object sender, RoutedEventArgs e) 
     { 
      mainSystem = new BalanceSystem(3); 
      leftBlock = new SystemComponents.Block(0, 100, 150, 100, mainSystem); 
      rightBlock = new SystemComponents.Block(1, 100, 150, 100, mainSystem); 
      balanceBeam = new SystemComponents.Bar(0, 0, 250, 150, 100, mainSystem); 
      mainSystem.addComponent(leftBlock, leftWeight); 
      mainSystem.addComponent(rightBlock, rightWeight); 
      mainSystem.addComponent(balanceBeam, balanceBar); 

      titleTextBlock.Text = "LOADED"; 
     } 

Конструктор для «BalanceSystem» - это когда все начинает идти не так. Он шагает в конструктор показан ниже:

public BalanceSystem(int count) 
{ 
    componentCount = count; 
    masterTimeline = new MovementTimeline(1); 
} 

После ввода конструктора «BalanceSystem» он переходит к конструктору моего класса таможенного «MovementTimeline». Строкой, которая разбивает все, является создание и подписка обработчика событий для masterStoryboard.Completed.

class MovementTimeline 
{ 
    private Storyboard masterStoryboard; 
    private Duration systemDuration; 

    public MovementTimeline(int totalTime) 
    { 
     systemDuration = new Duration(TimeSpan.FromSeconds(totalTime)); 
     masterStoryboard.Completed += new EventHandler(masterStoryboard_Completed); 

    } 

    void masterStoryboard_Completed(object sender, EventArgs e) 
    { 
     masterStoryboard.Children.Clear(); 
     //masterStoryboard.Completed -= masterStoryboard_Completed; 
    } 
} 

После компилятора или программы попадает в линию, где новый EventHandler создается он прекращает выполнение остальной части моего кода и загружает в окно, как есть. Я не могу для жизни понять, почему это происходит.

+0

Это полный код из класса MovementTimeLine? –

+0

Поскольку мне кажется, что вы добавляете обработчик событий, не создавая объекта StoryBoard. –

+0

Нет, это не полный класс MovementTimeLine, остальные - просто методы добавления и удаления анимаций и не имеют отношения к конструктору. Ничего себе, я полностью пропустил это. Большое вам спасибо за вашу помощь, которая решила мою проблему. Как мне пометить это как мой ответ? – Wired365

ответ

0

он смотрит на меня, как вы добавляете EventHandler никогда не создает объект раскадровки