WPF进度条未显示

时间:2013-03-12 06:42:17

标签: c# wpf observablecollection

我设置了一个WPF ProgressBar是不确定的真实和隐藏的可见性。在事件处理程序中,我正在尝试在更新ObservableCollection时使ProgressBar可见(以及其ItemsSource为ObservableCollection的ListView)。我希望来自DoEvents(的{​​{1}}}可以让它可见,但事实并非如此。 我注意到System.Windows.Forms.Application通常比ListView显示视觉变化更早完成。

如何制作SetPBarHelper(() => { ..} )可见内部事件处理程序代码?

即使ProgressBar已完成添加项目,如何判断我的ListView是否仍在更新?

ObserableCollection

1 个答案:

答案 0 :(得分:2)

您的问题仅仅是因为您阻止了UI线程。你不能这样做。

当UI线程再次运行消息循环时,您已设置ProgressBar.Visible = false。 <{1}}永远不会被绘制。

假设您使用的是.net 4.5您需要按如下方式重写代码。

ProgressBar

但总体而言,您需要尽快将UI线程的控制权返回给应用程序循环,以允许它重绘窗口,并在WorkerThread上运行更新。