2010-05-16 15 views

Respuesta

21

Si establece IsIndeterminate en True, el progreso tiene el significado de que algo está en curso pero no se puede determinar la duración exacta. Entonces, solo puedo decirte que lo configures en falso y que uses la barra de progreso en su comportamiento "estándar".

+0

El problema con el que estoy peleando es cómo se puede comenzar esa animación. Tengo la barra definida y es IsIndeterminate = "True". ¿Cómo disparo la barra para que haga su trabajo? – user38349

+9

El truco que estaba buscando es que tuve que establecer un valor mínimo y un valor máximo y una altura.Una vez que configuro estos se muestran. – user38349

15

En pocas palabras, si está tratando de hacer que la barra de progreso comience, pero como una barra indeterminada, entonces debe establecer la propiedad IsIndeterminate en verdadero cuando esté listo y en false cuando termine.

Así, en otras palabras:

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

Para darles contexto en cuanto a por qué desea hacerlo de esta manera de mirar en la siguiente pseudo código:

//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; 
} 

Voy a ser el primero para decir que no estoy seguro de si este es el uso previsto de esta propiedad, pero puedo decir que definitivamente funciona.

+0

Estoy confundido sobre cómo agregar llamadas asincrónicas a mi barra de progreso usando MVVM: http://stackoverflow.com/questions/25021838/indeterminate-progress-bar –

1

Aparentemente en algunos entornos La altura debe establecerse explícitamente para que se ejecute una animación indeterminada, mientras que en otros no es necesaria.

0

No establezca IsIndeterminate durante la inicialización (es decir, el diseñador de IU en XAML o el constructor en el lado del código) de la ventana que lo posee. Si lo haces, entonces la animación no comenzará. Establecerlo dentro del controlador de eventos 'Cargado'.

Tendría IsIndeterminate = 'False' en el lado XAML, y luego en el Window_Loaded caso, establezca:

myProgressBar.IsIndeterminate = true; 
0

Una posible solución del problema es simplemente para mostrar u ocultar el control ProgressBar:

progressBar.Visibility = Visibility.Visible; 

progressBar.Visibility = Visibility.Collapsed; 
0

Esto no es una diferencia real que el @dyslexicanaboko anterior, pero es rápido y fácil de hacer para una demostración que puede controlar:

En XAML:

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

en código detrás:

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

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

Al hacer clic en el botón Iniciar el proceso de la animación se iniciará y continuará hasta que se hace clic en el botón Detener proceso. Debería ser obvio, pero la opción IsIndeterminate no es una buena práctica de UI; mejor actualizar realmente el valor, pero para aquellos que quieran ver esto en acción ...

0

También asegúrese de que CacheMode = "BitmapCache" no esté configurado en su página; de lo contrario, la animación no se ejecutará. Simplemente muestra el mapa de bits en caché ...

Cuestiones relacionadas