Как проверить статус раскадровки? - PullRequest
5 голосов
/ 14 апреля 2011

Как мне проверить статус раскадровки?

Пример:

if (storyboard.Completed += true) // ???
{
}

(Этот код не работает по понятным причинам.)

Ответы [ 4 ]

4 голосов
/ 14 апреля 2011

Просто подключите событие Completed, и когда ваш код будет запущен, раскадровка будет завершена.Смотри: http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.completed(VS.95).aspx#Y565

4 голосов
/ 14 апреля 2011

как насчет создания логической переменной (например, IsCompleted) и установки ее в значение true в обратном вызове Completed?

1 голос
/ 28 февраля 2014
if(storyboard.GetCurrentState() == ClockState.Active)
{
    // do something
}
0 голосов
/ 24 сентября 2015

Это не работает.

            Storyboard storyBoardPulse = this.FindResource("StoryboardMainIconPulse") as Storyboard;
            Storyboard.SetTarget(storyBoardPulse, this.imageIcon);

            if (storyBoardPulse.GetCurrentState() != ClockState.Active)
            {
                storyBoardPulse.Begin();
            }

возвращает эту ошибку:

Исключение System.InvalidOperationException не было обработано кодом пользователя

HResult = -2146233079

Сообщение = Невозможно выполнить действие. Раскадровку указать не применяется к этому объекту для интерактивного управления.

Я делаю очень кровавый обходной путь:

private Boolean pulseOn;

private void operationsOfMaintenance_OperationExpired(Boolean state)
        {
            Storyboard storyBoardPulse = this.FindResource("StoryboardMainIconPulse") as Storyboard;
            Storyboard.SetTarget(storyBoardPulse, this.imageIcon);

            if (!state)
            {
                storyBoardPulse.Stop();
                storyBoardPulse.Remove();
                pulseOn = false;
            }
            else
            {
                if(!pulseOn)storyBoardPulse.Begin();
                pulseOn = true;
            }
        }

Кто-нибудь знает, почему в первом примере появляется ошибка!

спасибо

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