2012-07-02 29 views
7

Encontré algunos ejemplos para mostrar el progreso donde se usan las barras de progreso y las ruedas; Pude encontrar solo un ejemplo de javascript para mostrar una elipsis (punto-punto-punto) para referir el progreso, por lo tanto, pensé en hacer esta pregunta. Mi aplicación no es muy compleja, solo tiene algunas casillas de verificación y un botón. Recientemente, mi equipo solicitó una mejora y también quiero que sea simple.Mostrar progreso punto-punto-punto en un botón WPF

Hay un botón llamado 'IR' que el usuario hace clic después de configurar los ajustes necesarios. El código detrás de esto también es muy sencillo: deshabilita el botón después del evento click y la llamada es un ejecutable independiente que usa ProcessStartInfo y realiza tres acciones 'reconcle', 'post' y 'publish'. Utilizo el método WaitForExist() para volver a habilitar el botón.

Mi equipo me solicitó que mostrara el 'proceso actual' en el botón. Simplemente quieren que el texto del botón muestre Reconciliación. Conciliar ... Conciliar ... (a intervalos regulares, por ejemplo, 1 segundo) seguido de Publicación y Publicación de manera similar.

Sería bueno saber la forma más adecuada de lograr esto. Gracias por adelantado.

Respuesta

9

La forma más simple de hacerlo es usando ObjectAnimationUsingKeyFrames. Establezca TargetProperty en el Contenido y configure Value de cada DiscreteObjectKeyFrame en Reconciling. Reconciling.. Reconciling....

Ejemplo para un ControlTemplate con un ContentPresenter llamado PART_Content:

<ControlTemplate.Triggers> 
    <Trigger Property="IsEnabled" Value="False"> 
     <Trigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Content" Storyboard.TargetProperty="Content" Duration="00:00:00.8" RepeatBehavior="Forever"> 
         <DiscreteObjectKeyFrame KeyTime="00:00:00.0" Value="Loading"/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:00.2" Value="Loading."/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:00.4" Value="Loading.."/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:00.6" Value="Loading..."/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </Trigger.EnterActions> 
    </Trigger> 
</ControlTemplate.Triggers> 
+0

muchas gracias. Intentaré implementar esto y le diré si necesito más ayuda. Sin embargo; ya que tengo una resaca de WinForms; Esperaba que la solución se manejara más en el código que en el xaml. –

Cuestiones relacionadas