Как мне проверить статус раскадровки?
Пример:
if (storyboard.Completed += true) // ??? { }
(Этот код не работает по понятным причинам.)
Просто подключите событие Completed, и когда ваш код будет запущен, раскадровка будет завершена.Смотри: http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.completed(VS.95).aspx#Y565
Completed
как насчет создания логической переменной (например, IsCompleted) и установки ее в значение true в обратном вызове Completed?
if(storyboard.GetCurrentState() == ClockState.Active) { // do something }
Это не работает.
Storyboard storyBoardPulse = this.FindResource("StoryboardMainIconPulse") as Storyboard; Storyboard.SetTarget(storyBoardPulse, this.imageIcon); if (storyBoardPulse.GetCurrentState() != ClockState.Active) { storyBoardPulse.Begin(); }
возвращает эту ошибку:
Исключение System.InvalidOperationException не было обработано кодом пользователя HResult = -2146233079 Сообщение = Невозможно выполнить действие. Раскадровку указать не применяется к этому объекту для интерактивного управления.
Исключение 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; } }
Кто-нибудь знает, почему в первом примере появляется ошибка!
спасибо