为什么我不能设置ProgressBar的值?

时间:2011-02-14 02:39:30

标签: wpf progress-bar

朋友们,谢谢你的时间! 在WPF中的代码中存在一个问题。我使用ProgressBar和一个动画来显示值变化的进度。当动画结束时,我尝试将值重置为0,以便ProgressBar可以从0开始一个新的动画再次到100.但结果是我无法将值设置为0,看起来无论我怎么尝试都会永远是100! 能不能给我一些想法,谢谢!

        pbStatus.Value = 0;//Promblem!! pbStatus is a ProgressBar
        Duration dr = new Duration(TimeSpan.FromSeconds(2));
        DoubleAnimation da = new DoubleAnimation(100, dr);
        pbStatus.IsIndeterminate = false;
        pbStatus.Visibility = Visibility.Visible;
        pbStatus.BeginAnimation(ProgressBar.ValueProperty, da);

2 个答案:

答案 0 :(得分:4)

请参阅this article


摘要:动画后设置值有三种方法。

  1. 将动画的FillBehavior属性设置为Stop
  2. 删除整个Storyboard。 (不适用,因为你没有故事板)
  3. 从单个属性中删除动画。
  4. (1)设置要停止的动画的填充行为:

    da.FillBehavior = FillBehavior.Stop;
    

    (3)在设置新值之前调用此动画来删除动画:

    pbStatus.BeginAnimation(ProgressBar.ValueProperty, null);
    

答案 1 :(得分:1)

来自this article

private void CreateDynamicProgressBarControl()
{
    ProgressBar PBar2 = new ProgressBar();
    PBar2.IsIndeterminate = false;
    PBar2.Orientation = Orientation.Horizontal;
    PBar2.Width = 100;
    PBar2.Height = 10;
    Duration duration = new Duration(TimeSpan.FromSeconds(10));
    DoubleAnimation doubleanimation = new DoubleAnimation(100.0, duration);
    PBar2.BeginAnimation(ProgressBar.ValueProperty, doubleanimation);
    SBar.Items.Add(PBar2);

}