ОК, я создаю графический интерфейс для своего MP3-плеера, используя WPF, и у меня есть граница, которая увеличивает свою ширину на каждую секунду воспроизводимой дорожки, тем самым создавая «Progress Bar» для текущей песни. Я назвал границу ProgressBarBorder. После того как весь плейлист завершен, я хотел использовать DoubleAnimation для постепенного исчезновения границы. Теперь, если я снова запустил игрока, граница реагирует так, как предполагается (значение ширины начинается с 0 и продолжается до конца песни), но свойство непрозрачности по какой-то странной причине остается 0.0 (то есть значение, которое DoubleAnimation наборы). Я явно закодировалВ WPF после свойства DoubleAnimation UIElement изменить нельзя?
ProgressBarBorder.Opacity = 1.0;
в методе, который начинает воспроизведение. Тем не менее, он остается невидимым. Теперь, если я не использую DoubleAnimation и просто написать
ProgressBarBorder.Opacity = 0.0;
, когда список воспроизведения завершен, он вернуться к 1.0, когда я начинаю проигрыватель. Именно по этой причине я уверен, что анимация вызывает проблему. Кроме того, разве свойство не должно возвращаться в исходное состояние после завершения анимации? Если да, моя граница должна стать видимой автоматически после завершения анимации.
Вот мой частично псевдо-код:
if (TrackIsComplete)
{
DoubleAnimation Fading = new DoubleAnimation();
Fading.From = 1.0;
Fading.To = 0.0;
Fading.Duration = TimeSpan.FromSeconds(3);
ProgressBarBorder.BeginAnimation(Border.OpacityProperty, Fading);
}
и
private void PlayTrack()
{
ProgressBarBorder.Opacity = 1.0;
Play();
....
}
Может кто-нибудь помочь, пожалуйста? Благодарю.
Кроме того, установка значения явно волей «козырной» анимации и привязок и сделать их больше не применять –
@Paul: на самом деле, анимированных значений имеют приоритет над локально заданными значениями. См. Http://msdn.microsoft.com/en-us/library/ms743230.aspx. –
Отличный ответ. Очень полезно для той же проблемы, с которой я столкнулся с анимацией роста. – TalkingCode