2010-05-16 2 views

Antwort

21

Wenn Sie IsIndeterminate auf True gesetzt, hat der Fortschritt die Bedeutung, dass etwas im Gange ist, aber Sie die genaue Dauer nicht bestimmen kann. Also kann ich Ihnen nur sagen, dass Sie es auf false setzen und den Fortschrittsbalken in seinem "Standard" -Verhalten verwenden sollen.

+0

Das Problem, das ich kämpfe, ist, wie Sie es bekommen, um diese Animation zu starten. Ich habe den Balken definiert und IsIndeterminate = "True". Wie kann ich die Bar auslösen, um ihr Ding zu machen? – user38349

+9

Der Trick, nach dem ich gesucht habe, ist, dass ich einen minimalen Wert und einen maximalen Wert und eine Höhe einstellen musste.Sobald ich diese eingestellt habe, wird es angezeigt. – user38349

15

Einfach ausgedrückt, wenn Sie versuchen, den Fortschrittsbalken zu starten, aber als unbestimmter Balken, dann müssen Sie die Eigenschaft IsIndeterminate auf True setzen, wenn fertig und auf False, wenn Sie fertig sind.

Also mit anderen Worten:

pbar.IsIndeterminate = true; //This starts your bar's animation 
pbar.IsIndeterminate = false; //This stops your bar's animation 

Um Ihnen Kontext, warum Sie wollen würde, es auf diese Weise Blick auf den folgenden Pseudo-Code zu tun:

//Some method that is going to start something that is going to take a while 
public void StartLongRunningProcess() 
{ 
    //Make a call to a web service asynchronously etc... 

    //Start the animation for your progress bar 
    pbar.IsIndeterminate = true; 
} 

//The method (delegate) that handles the result, usually from an event. 
//This method will handle the result of the asynchronous call 
public void HandlerForLongRunningProcess() 
{ 
    //Do stuff with result from your asynchronous web service call etc... 

    //Stop the animation for your progress bar 
    pbar.IsIndeterminate = false; 
} 

Lassen Sie mich die ersten sein, zu sagen, dass ich nicht sicher bin, ob dies die beabsichtigte Verwendung dieser Eigenschaft ist, aber ich kann sagen, dass es definitiv funktioniert.

+0

Ich bin verwirrt, wie Asynchrone Aufrufe zu meinem Fortschrittsbalken mit MVVM hinzufügen: http://stackoverflow.com/questions/25021838/indeterminate-progress-bar –

1

Anscheinend muss die Höhe in einigen Umgebungen explizit festgelegt werden, damit eine unbestimmte Animation ausgeführt wird, während sie in anderen Umgebungen nicht benötigt wird.

0

Setzen Sie es nicht auf IsIndeterminate während der Initialisierung (d. H. UI-Designer in XAML oder den Konstruktor auf der Codepage) des Fensters, das es besitzt. Wenn Sie dies tun, wird die Animation nicht gestartet. Legen Sie sie im Ereignishandler "Loaded" fest.

Ich würde IsIndeterminate = 'False' auf der XAML-Seite haben, und dann in der Window_Loaded Fall gesetzt:

myProgressBar.IsIndeterminate = true; 
0

Eine mögliche Abhilfe des Problems ist einfach zu zeigen, oder die Steuerung ProgressBar verstecken:

progressBar.Visibility = Visibility.Visible; 

progressBar.Visibility = Visibility.Collapsed; 
0

Dies ist kein wirklicher Unterschied als @dyslexicanaboko oben, aber es ist schnell und einfach für eine Demonstration, die Sie steuern können:

In XAML:

<Button Content="Start Process" HorizontalAlignment="Center" Click="StartAProcess"/> 
<Button Content="Stop Process" HorizontalAlignment="Center" Click="StopAProcess"/> 
<ProgressBar Name="pBar1" Height="20"/> 

in Code-behind:

Public Sub StartAProcess() 
    pBar1.IsIndeterminate = True 
End Sub 

Public Sub StopAProcess() 
    pBar1.IsIndeterminate = False 
End Sub 

Auf die Schaltfläche Prozess starten, klicken die Animation starten und weiter, bis die Schaltfläche Prozess beenden geklickt wird. Es sollte offensichtlich sein, aber die IsIndeterminate-Option ist keine gute UI-Praxis; besser, um den Wert tatsächlich zu aktualisieren, aber für diejenigen, die dies in Aktion sehen möchten ...

0

Stellen Sie außerdem sicher, dass CacheMode = "BitmapCache" nicht auf Ihre Seite festgelegt ist - andernfalls wird die Animation nicht ausgeführt. Es zeigt nur die zwischengespeicherte Bitmap ...