ОК, я создаю графический интерфейс для моего MP3-плеера, используя WPF, и у меня есть граница, которая увеличивает его свойство ширины на каждую секунду воспроизводимого трека, таким образом, создавая «Индикатор прогресса» для текущей воспроизводимой песни. Я назвал границу ProgressBarBorder. После того, как весь плейлист завершен, я хотел использовать DoubleAnimation для исчезновения границы. Теперь, если я снова запускаю проигрыватель, граница реагирует так, как она должна (это означает, что ширина начинается с 0 и продолжается до конца песни), но свойство непрозрачности по какой-то странной причине остается равным 0.0 (это значение, которое DoubleAnimation наборы). Я явно закодировал
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();
....
}
Может кто-нибудь помочь, пожалуйста? Спасибо.