Как сбросить индикатор выполнения 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? Что мне здесь не хватает?


person Junior Mayhé    schedule 20.12.2009    source источник
comment
вот видео, у которого такая же проблема youtube.com/watch?v=YrgdcsHDHRE   -  person Junior Mayhé    schedule 20.12.2009


Ответы (2)


Взгляните на эту ветку:

Как остановить анимацию в C # / WPF?

person Tony The Lion    schedule 20.12.2009
comment
Да, я был там. Я не использую StoryBoard, а просто код на C #, чтобы проверить, исчезает ли этот эффект серого свечения. - person Junior Mayhé; 20.12.2009
comment
Действительно проблема с ОС - person Junior Mayhé; 24.12.2009

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

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

Если вы явно задаете значения from и too, а не просто значение назначения.

Код:

В окне 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);

PB находится в StackPanel, xaml - это

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

Первоначально это было протестировано на XP, но см. Ниже.

Решение для Win 7 см. Здесь

текст ссылки

person Andrew    schedule 20.12.2009
comment
Хорошо, но эффект серого мигающего свечения никуда не делся. Он все еще там. - person Junior Mayhé; 20.12.2009
comment
У меня проблемы с воспроизведением эффекта свечения, о котором вы говорите. Вы установили какие-либо другие значения где-нибудь в ProgressBar? - person Andrew; 20.12.2009
comment
Еще одна вещь, которую следует попробовать, - это в вашем коде переключить IsIndeterminate на false, а затем в следующей строке вернуть его на true, помогает ли это? - person Andrew; 20.12.2009
comment
Я уже загрузил видео на youtube.com/watch?v=HQtGA_AW05U, вы можете увидеть это за несколько минут. Индикатор выполнения имеет значения по умолчанию (я не менял его свойства). - person Junior Mayhé; 20.12.2009
comment
Хорошо, я проверю это, как только Youtube обработает его. - person Andrew; 20.12.2009
comment
Я вижу эффект, я несколько озадачен - похоже, это не сбрасывает стиль - на какой ОС вы это используете? Я использую XP? - person Andrew; 20.12.2009
comment
Просто попробовал это в Windows 7 - мне не нравится это свечение - см. Этот пост, который, кажется, решает эту проблему, stackoverflow.com/questions/1523217/ - person Andrew; 20.12.2009
comment
Спасибо, Эндрю, может, стоит отправить его команде Visual Studio 2010 ?! - person Junior Mayhé; 20.12.2009
comment
Добро пожаловать - да хорошая идея - только что добавил обновление к моему ответу. Я уже сообщал о другой проблеме с ужасным PB, когда вы не можете сбросить максимальные значения stackoverflow.com/questions/1852647/ - person Andrew; 20.12.2009