Отобразить прогресс точка-точка-точка в кнопке 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>