【问题标题】:WPF ProgressBar doesn't show progressWPF ProgressBar 不显示进度
【发布时间】:2011-01-18 10:40:29
【问题描述】:

我对 WPF ProgressBar 感到困惑。这是我编写的用于显示它的代码:

<ProgressBar Height="31" Margin="15" Name="progressBar" 
VerticalAlignment="Top" IsIndeterminate="True" />

据我所知,这足以让它发挥作用。但它在我的项目中不起作用。我的意思是当我显示窗口(弹出实际上是 xbap 项目)时,进度条不显示任何动画,但是它是可见的。

还没有后台线程,UI线程没有被阻塞。

怎么了?

【问题讨论】:

  • 你改变了ProgressBar的默认样式吗?
  • 它在设计时有效吗?
  • 正如您自己所说,这应该可以正常工作,并且确实可以正常工作,因为我刚刚对其进行了测试。既然是这种情况,显然您的上下文在这里有问题,遗憾的是您没有为此提供任何代码。
  • 您所显示的内容仅显示您如何设置进度条以使其显示在屏幕上。您应该提供一些代码来显示您如何更新它(我假设这是您想要的,您的问题不清楚)

标签: c# .net wpf progress-bar


【解决方案1】:

还没有后台线程,UI线程没有被阻塞。

我认为你完全错了,那是你的问题。您没有后台线程,因此您的 UI 线程阻塞。如果您的更新进度条的方法正在 UI 线程上运行(如果您没有在后台线程上运行它),则在该方法完成运行并且控制权完成之前,不会出现对进度条的更新返回给调度员。

您需要使用BackgroundWorker 在后台线程上运行长时间运行的方法,并通过引发和处理其ProgressChanged 事件来更新进度条。事件处理程序在 UI 线程上运行,并且可以更新 UI 对象。

【讨论】:

【解决方案2】:

它可能使用windows主题,其中不确定的进度条显示不正确。

【讨论】:

    【解决方案3】:

    请试试这些代码

            ProgressBar test=new ProgressBar();
            Duration dr = new Duration(TimeSpan.FromSeconds(timespan));
            DoubleAnimation da = new DoubleAnimation(determination, dr);
            test.IsIndeterminate = false;
            test.Visibility = Visibility.Visible;
            test.BeginAnimation(ProgressBar.ValueProperty, da);
    

    如果你想让 ProgressBar 工作,你应该创建一个 Animation 实例,并将其设置为 ProgressBar。希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      相关资源
      最近更新 更多