Heim > Artikel > Backend-Entwicklung > Wie implementiert man einen einfachen Fortschrittsbalken in WPF?
Ich habe kürzlich an einem Projekt gearbeitet und festgestellt, dass der von meinem ehemaligen Kollegen geschriebene Fortschrittsbalken sehr effektiv war. Deshalb habe ich ihn vereinfacht. Er ist nicht umwerfend, aber für das Projekt dennoch ausreichend.
Außerdem schauen wir uns zuerst den Effekt an, nachdem wir ihn aufgerufen haben
1 Da die Vordergrundanzeige von ProgressbBar dieselbe sein muss, muss sie vorhanden sein sei ein Parameter auf Das Steuerelement ist so eingestellt, dass ein Parameterwert ForegroundColor
public int ForegroundColor {get{return _foregroundColor; }set{ _foregroundColor = value; LinearGradientBrush lgb = dictionary["ForegroundColor" + value] as LinearGradientBrush;if (lgb != null) proBar.Foreground = txt.Foreground = percent.Foreground = lgb; } }
ist. Es gibt einen solchen Satz im Code „LinearGradientBrush lgb = dictionary[“ForegroundColor“ + value] as LinearGradientBrush;" Es ist praktisch, diesen Parameter zu verwenden, um den Stil aus der Stildatei abzurufen.
<LinearGradientBrush x:Key="ForegroundColor1" EndPoint="1,0.5" StartPoint="0,0.5"><GradientStop Color="#FFBBF586" Offset="0.5"/><GradientStop Color="#FFD4F9C3" Offset="1"/></LinearGradientBrush><LinearGradientBrush x:Key="ForegroundColor2" EndPoint="1,0.5" StartPoint="0,0.5"><GradientStop Color="#FF5BE26E" Offset="0.5"/><GradientStop Color="#FF8DEC9C" Offset="1"/></LinearGradientBrush><LinearGradientBrush x:Key="ForegroundColor3" EndPoint="1,0.5" StartPoint="0,0.5"><GradientStop Color="#FFB656F2" Offset="0.5"/><GradientStop Color="#FFAE8DFE" Offset="1"/></LinearGradientBrush><LinearGradientBrush x:Key="ForegroundColor4" EndPoint="1,0.5" StartPoint="0,0.5"><GradientStop Color="#FF3AE9E9" Offset="0.5"/><GradientStop Color="#FF8DFDFE" Offset="1"/></LinearGradientBrush>
2. Da es sich um eine ProgressBar handelt, muss sie einen Fortschrittswert haben. Wir verwenden TextBlock, um diesen Wert anzuzeigen. Wir müssen die Benachrichtigungsschnittstelle implementieren, um eine Echtzeitbenachrichtigung sicherzustellen . auf die Seite.
public string ValueText {get{return _valueText; }set{ _valueText = value;if (this.PropertyChanged != null) {this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("ValueText")); } } }
3. Aktivieren Sie einen Hintergrundthread, um den Fortschrittseffekt kontinuierlich zu aktualisieren
private void Bgw_DoWork(object sender, DoWorkEventArgs e) {for (int i = 0; i < BarValue; i++) { System.Threading.Thread.Sleep(50); proBar.Dispatcher.Invoke(new Action( delegate{if (proBar.Value <= BarValue) { proBar.Value++; } })); ValueText = i + ""; } ValueText = BarValue + ""; }
Quellcode
Das obige ist der detaillierte Inhalt vonWie implementiert man einen einfachen Fortschrittsbalken in WPF?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!