2009-12-20 3 views
2

Я тестирую индикатор выполнения WPF и пытаюсь вернуть его в исходное состояние, но он не работает.Как сбросить индикатор прогресса WPF?

Duration duration = new Duration(TimeSpan.FromSeconds(1)); 
DoubleAnimation doubleanimation = new DoubleAnimation(200.0, duration); 
myProgress.IsIndeterminate = true; 
myProgress.BeginAnimation(ProgressBar.ValueProperty, doubleanimation); 
myProgress.Value = 0; 

Перед анимацией индикатор выполнения статический (без анимации). После анимации цвет индикатора выполнения теперь светло-серый (светлее, чем раньше) с эффектом яркости вспышки.

При комментировании продолжительности и двойной анимации индикатор выполнения остается статичным. Я вижу, что это связано с этой двойной анимацией.

//Duration duration = new Duration(TimeSpan.FromSeconds(1)); 
//DoubleAnimation doubleanimation = new DoubleAnimation(200.0, duration); 
myProgress.IsIndeterminate = true; 
//myProgress.BeginAnimation(ProgressBar.ValueProperty, doubleanimation); 
myProgress.Value = 10; 
myProgress.Value = 0; 

Как я могу решить эту проблему DoubleAnimation? Что мне здесь не хватает?

+0

вот видео, для которого имеет ту же проблему http://www.youtube.com/watch?v = YrgdcsHDHRE –

+0

Помог ли мой ответ? – Andrew

ответ

1

Посмотрите на эту тему:

How to stop an animation in C#/WPF?

+0

Да, я был там. Я не использую StoryBoard, а просто код C#, чтобы проверить, исчезнет ли этот эффект серого свечения. –

+0

Действительно, это проблема с ОС –

0

Используйте эту форму DoubleAnimation вместо

DoubleAnimation doubleanimation = new DoubleAnimation(0,200, duration); 

Где вы явно установить как а из и тоже значение, а не только значение назначения ,

Код:

В окне CTOR:

myProgress.Maximum = 100; myProgress.Minimum = 0; 

Тогда говорят в обработчике нажатия кнопки

myProgress.IsIndeterminate = false; //shouldn't really need this PB oddity 
myProgress.IsIndeterminate = true; 
myProgress.Value = 0; 

Duration duration = new Duration(TimeSpan.FromSeconds(1)); 
DoubleAnimation doubleanimation = new DoubleAnimation(0,200, duration); 

myProgress.BeginAnimation(ProgressBar.ValueProperty, doubleanimation); 

УБ находится в StackPanel, XAML является

<ProgressBar Name="myProgress" Height="20"></ProgressBar> 

Это первоначально был протестирован на XP, но смотри ниже

Для решения Win 7 см здесь

link text

+0

Хорошо, но эффект синего эффекта серого не исчезает. Он все еще там. –

+0

У меня возникли проблемы с воспроизведением эффекта свечения, о котором вы говорите. Установили ли вы какие-либо другие значения в другом месте на ProgressBar? – Andrew

+0

Другая вещь, которую нужно попробовать, заключается в том, что ваш код переключает IsIndeterminate на false, а затем в следующей строке возвращает значение true, помогает ли это? – Andrew

Смежные вопросы