2012-07-02 9 views
7

但我发现了很多用于显示使用进度条和轮子的进度的示例;我只能找到一个javascript示例来显示省略号(dot-dot-dot)来指代进度,因此我想问这个问题。我的应用程序不是很复杂 - 它只有几个复选框和一个按钮。最近我的团队要求进行改进,并希望保持简单。在WPF按钮中显示点点进度

有一个名为'GO'的按钮,用户在配置所需的设置后点击。它背后的代码也非常简单 - 它在点击事件之后禁用了按钮,并且使用ProcessStartInfo调用独立的exe,执行“reconcle”,“post”和“publish”三个操作。我使用WaitForExist()方法重新启用按钮。

我被我的团队要求在按钮上显示'当前进程'。他们只是想让按钮文字显示Reconciling。协调...协调...(定期的时间间隔,1秒),然后以类似的方式发布和发布。

很高兴知道实现此目标的最合适方法。提前致谢。

回答

9

最简单的方法是使用ObjectAnimationUsingKeyFrames。在内容上设置TargetProperty并将每个DiscreteObjectKeyFrameValue设置为Reconciling. Reconciling.. Reconciling...

例的ControlTemplateContentPresenter命名为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

非常感谢。我会尽力实现这一点,并让你知道我是否需要更多帮助。然而;因为我有一个WinForms宿醉;我希望解决方案将在代码中处理得更多,而不是xaml。 –