Ok, so fand ich einige ziemlich seltsames Verhalten beim Herumspielen mit dem WPF ProgressBar-Steuerelement. Dieses Steuerelement befindet sich in einer Spalte eines ListView-Steuerelements und die allgemeine Situation unterscheidet sich wenig von diese Frage & Antwort in seiner Essenz.
I binden Progressbar
zu einer Klasse durch mehrere Eigenschaften ( Min
, Max
, Value
), alle OneWay-Bindungen natürlich. Diese andere Klasse wird von einem anderen Thread aus aktualisiert und verwendet regelmäßig die INotifyPropertyChanged
Schnittstelle, um der ProgressBar mitzuteilen, dass der Status fortschreitet. Und das alles funktioniert ganz hervorragend!
Aber hier wird es merkwürdig. Mein Fortschrittsbalken verliert sein Leuchten bis zu dem Moment, in dem er den Max
(=100%) Wert. Dann fängt es plötzlich an, sein weißes, leuchtendes Zeug über den ganzen grünen Balken zu pulsieren, und das ist sehr ärgerlich. Ich zeige den Fortschritt mit einem Grund, und das Fehlen eines Pulses ist eigentlich ziemlich ablenkend, sobald Sie beginnen zu bemerken, es nicht da ist.
Also machte ich mich an die Fehlersuche. Ich fand heraus, dass mit Thread.Sleep(1000)
bei der Bearbeitung meiner Threads, wurde das Glühen immer noch verdeckt, aber wenn ich es auf Thread.Sleep(1500)
das Leuchten kommt immer wieder mit einer verrückten Kraft zurück. Danach habe ich versucht, meine Fortschrittseinheiten in kleinere Zahlen zu übersetzen, damit die ganzzahligen Werte länger brauchen, um sich zu ändern. Min 0, Max 100 hat immer noch das Fehlen des Glühens. Bei Min. 0, Max. 10 ist das Glühen in voller Stärke zurückgekehrt. In allen Fällen ist es derselbe Arbeits- und Zeitaufwand, um 100 % zu erreichen, aber es ist ein sehr sichtbarer binärer JA/NEIN-Effekt in Bezug auf das Glühen. Das einzige, was ich nicht getestet habe, ist, ob es auch passiert, wenn die ProgressBar nicht innerhalb dieser ListView-Steuerung platziert ist.
Ich weiß selbst gut genug, dass ich nicht den Sinn der tiefen WPF-Innereien der (XAML mit dem) ProgressBar-Steuerelement beteiligt machen kann. Also hoffte ich, dass jemand hier weiß, ob dies ein bekannter Fehler ist, etwas, das Sie stolperte in, oder etwas, das Sie vielleicht sogar wissen, wie um zu arbeiten/beheben.
Auf meinem Rechner läuft Windows 7, und ich entwickle in VS2010 mit dem .NET Framework 4 Client Profile.