Хорошо, поэтому я обнаружил довольно странное поведение, возясь с элементом управления WPF ProgressBar.Этот элемент управления находится в столбце элемента управления ListView, и общая ситуация мало отличается от этого вопроса и ответа по своей сути.
Я связываю Progressbar
с классом с помощью несколькихсвойства (Min
, Max
, Value
), все привязки OneWay, очевидно.Этот другой класс обновляется из другого потока и регулярно использует интерфейс INotifyPropertyChanged
, чтобы сообщить ProgressBar, что состояние прогрессирует.И все это прекрасно работает!
Но вот тут-то и странно.Мой ProgressBar теряет свечение ... вплоть до момента, когда он достигает значения Max
(= 100%).Затем он внезапно начинает пульсировать своим белым светящимся материалом по всей зеленой полосе, и это очень раздражает.Я показываю прогресс по причине, и отсутствие импульса на самом деле довольно сильно отвлекает, как только вы начинаете замечать, что его там нет.
Таким образом, я отправляюсь на отладку.Я обнаружил, что при обработке Thread.Sleep(1000)
в моих потоках он все еще скрывал свечение, но если я увеличу его до Thread.Sleep(1500)
, свечение всегда возвращается с безумной энергией.После этого я попытался перевести свои единицы прогресса в меньшие числа, чтобы изменить целочисленные значения.Мин 0, Макс 100 до сих пор не имеет свечения.Мин 0, Макс 10 заставил свечение вернуться в полную силу.Во всех случаях это тот же объем работы и время, потраченное на достижение 100%, но это очень заметный двоичный эффект ДА / НЕТ в отношении отображения свечения.Единственное, что я не проверял, так это то, происходит ли это, когда ProgressBar не находится внутри этого элемента управления ListView.
Я достаточно хорошо знаю себя, так что не могу понять глубокие внутренности WPF (XAML связан с элементом управления) ProgressBar.Поэтому я надеялся, что кто-нибудь здесь знает, является ли это известной ошибкой, с которой они столкнулись, или с которой они могли бы даже знать, как обойти / исправить.
Моя машина работает под управлением Windows 7, и я занимаюсь разработкой вVS2010 для клиентского профиля .NET Framework 4.