Анимации на элементах, которые собираются удалить из пользовательского интерфейса - PullRequest
1 голос
/ 02 октября 2009

У меня есть StackPanel, из которой я хочу удалить элемент. Прежде чем удалить элемент, я хочу выполнить анимацию элемента, чтобы сообщить, что элемент собирается быть удаленным. Однако выполнение анимации с последующим удалением элемента приводит к немедленному удалению элемента без видимой анимации. Есть ли правильный способ сделать это?

StackPanel myStackPanel = new StackPanel();
// myStackPanel is loaded with visible elements here.

// Time to remove an element!
MyUserControl control = myStackPanel.Children[0] as MyUserControl;
control.SomeAnimation.Begin();
myStackPanel.Children.Remove(control);

UPDATE Я закончил тем, что сделал следующее уродство, чтобы заставить это работать как надеялся:

control.SomeAnimation.Begin();
Thread t = new Thread(delegate()
{
   Thread.Sleep(500);
   Dispatcher.BeginInvoke( () => myStackPanel.Children.Remove(control));
});
t.Start();

1 Ответ

1 голос
/ 02 октября 2009

Вы можете использовать что-то вроде события Completed (я уверен, что есть другие способы получить тот же результат).

    private void SomeAnimation_Completed(object sender, EventArgs e)
    {
        //Then call your remove code or method.
    }

Как ни странно, Blend 3 не показывает Storyboard. Завершенный как событие, хотя intellesense, хотя VS 2008 показывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...