Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man einen einfachen Fortschrittsbalken in WPF?

Wie implementiert man einen einfachen Fortschrittsbalken in WPF?

零下一度
零下一度Original
2017-06-23 15:17:554520Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn