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