2012-07-02 10 views
7

Znalazłem kilka przykładów pokazujących postęp, w którym używane są paski postępu i koła; Mogłem znaleźć tylko jeden przykład javascript, aby pokazać elipsę (kropka-kropka), aby odnieść postęp, dlatego myślałem o zadaniu tego pytania. Moja aplikacja nie jest zbyt skomplikowana - ma tylko kilka pól wyboru i jeden przycisk. Niedawno mój zespół poprosił o ulepszenie i chciałbym, aby było to również proste.Wyświetlanie postępu punktu kropki w przycisku WPF

Istnieje przycisk o nazwie "GO", który użytkownik klika po skonfigurowaniu wymaganych ustawień. Kod za nim jest również bardzo prosty - wyłącza przycisk po zdarzeniu kliknięcia, a wywołanie jest samodzielnym serwerem exe przy użyciu ProcessStartInfo, który wykonuje trzy akcje: "wskrzeszanie", "publikowanie" i "publikowanie". Używam metody WaitForExist(), aby ponownie włączyć przycisk.

Zostałem poproszony przez mój zespół, aby pokazać "bieżący proces" na przycisku. Po prostu chcą, aby tekst przycisku pokazywał Uzgodnienie. Godzenie ... Godzenie ... (w regularnych odstępach czasu, powiedzmy, 1 sekundę), a następnie publikowanie i publikowanie w podobny sposób.

Byłoby miło znać najbardziej odpowiedni sposób, aby to osiągnąć. Z góry dziękuję.

Odpowiedz

9

Najprostszym sposobem jest użycie ObjectAnimationUsingKeyFrames. Ustaw właściwość TargetProperty na zawartości i ustaw wartość Value każdego z nich na DiscreteObjectKeyFrame na .

Przykład dla ControlTemplate z ContentPresenter nazwie 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

dzięki. Spróbuję to zaimplementować i poinformuję, jeśli potrzebuję więcej pomocy. Jednak; ponieważ mam kaca WinForm; Miałem nadzieję, że rozwiązanie będzie obsługiwane bardziej w kodzie niż w xaml. –