2012-07-02 15 views
7

Ho trovato alcuni esempi per mostrare i progressi in cui vengono comunque utilizzate le barre di avanzamento e le ruote; Ho potuto trovare solo un esempio javascript per mostrare un'ellissi (punto-punto-punto) per riferire il progresso, quindi ho pensato di porre questa domanda. La mia app non è molto complessa: ha solo alcune check-box e un solo pulsante. Recentemente il mio team ha richiesto un miglioramento e desidera anche mantenerlo semplice.Avanzamento del dot-dot-dot del display in un pulsante WPF

C'è un pulsante denominato "GO" che l'utente fa clic dopo aver configurato le impostazioni richieste. Il codice sottostante è anche molto semplice: disattiva il pulsante dopo l'evento click e chiama un exe standalone usando ProcessStartInfo che esegue tre azioni 'riconoscimento', 'post' e 'pubblica'. Io uso il metodo WaitForExist() per riattivare il pulsante.

Mi è stato richiesto dal mio team di mostrare il "processo corrente" sul pulsante. Vogliono semplicemente il testo del pulsante per mostrare la riconciliazione. Riconciliare .. Riconciliare ... (a intervalli regolari dirlo, 1 secondo) seguito da Pubblicazione e pubblicazione in modo simile.

Sarebbe bello sapere il modo più appropriato per raggiungere questo obiettivo. Grazie in anticipo.

risposta

9

Il modo più semplice per farlo è utilizzare ObjectAnimationUsingKeyFrames. Impostare TargetProperty sul contenuto e impostare Value di ogni DiscreteObjectKeyFrame su Reconciling. Reconciling.. Reconciling....

Esempio per un ControlTemplate con ContentPresenter nome 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

Grazie mille. Cercherò di implementarlo e farti sapere se ho bisogno di più aiuto. Però; dal momento che ho una sbornia di WinForms; Speravo che la soluzione venisse gestita più nel codice piuttosto che in xaml. –

Problemi correlati