【问题标题】:Display dot-dot-dot progress in a WPF button在 WPF 按钮中显示点-点-点进度
【发布时间】:2012-07-03 05:08:33
【问题描述】:

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

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

我的团队要求我在按钮上显示“当前进程”。他们只是希望按钮文本显示 Reconciling。正在核对……正在核对……(例如每隔 1 秒),然后以类似的方式发布和发布。

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

【问题讨论】:

    标签: wpf button progress ellipsis


    【解决方案1】:

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

    ControlTemplate 与名为 ContentPresenterPART_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>
    

    【讨论】:

    • 非常感谢。我会尝试实现这一点,如果我需要更多帮助,请告诉您。然而;因为我有 WinForms 宿醉;我希望解决方案将在代码中而不是在 xaml 中得到更多处理。
    猜你喜欢
    • 2011-07-08
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多