Отобразить прогресс точка-точка-точка в кнопке WPF

Я нашел немало примеров для демонстрации прогресса, где используются индикаторы выполнения и колеса; Я мог найти только один пример JavaScript, чтобы показать многоточие (точка-точка-точка) для обозначения прогресса, поэтому я подумал задать этот вопрос. Мое приложение не очень сложное - оно имеет только несколько флажков и одну кнопку. Недавно моя команда попросила об улучшении и также хочет, чтобы оно было простым.

Существует кнопка с именем "GO", которую пользователь нажимает после настройки необходимых параметров. Код, который стоит за ним, также очень прост - он отключает кнопку после события click и вызывает автономный exe-файл, используя ProcessStartInfo который выполняет три действия "пересмотреть", "опубликовать" и "опубликовать". Я использую WaitForExist() метод, чтобы снова включить кнопку.

Моя команда попросила меня показать "текущий процесс" на кнопке. Они просто хотят, чтобы текст кнопки отображал Согласование. Согласование.. Согласование... (с регулярными интервалами, скажем, 1 секунда) с последующей публикацией и публикацией аналогичным образом.

Было бы неплохо узнать наиболее подходящий способ для достижения этой цели. Заранее спасибо.

1 ответ

Самый простой способ сделать это с помощью ObjectAnimationUsingKeyFrames, Установите TargetProperty на Контент и установите Value каждого DiscreteObjectKeyFrame в Reconciling. Reconciling.. Reconciling...,

Пример для ControlTemplate с ContentPresenter названный 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>
Другие вопросы по тегам