当控件正在渲染时如何显示一些动画?

7
我有一个显示大量数据的 WPF ListBox。我需要平滑滚动,因此我将 ListBox.ScrollViewer.CanContentScroll 设置为 False ,禁用了虚拟化。现在,当我打开包含此 ListBox 的选项卡时,由于 ListBox 正在加载/创建项目/渲染,几秒钟内什么也看不到。我还有一个控件,显示一些动画,指示应用程序正在运行,用户需要稍等一会儿。

如何在 ListBox 不可用时显示此控件?


也许提供更多细节会更有帮助?比如说……你正在使用哪种编程语言和框架……不幸的是,“ListBox”这样的术语在很多地方都被使用。 - Paul
你的列表中有多少项? - Chen Kinnrot
有一个包含大约500个项的列表框,其中包含内部项控件。 - levanovd
你知道“加载”,“创建项目”和“渲染”的哪个阶段耗费了所有时间吗? - Rob Fonseca-Ensor
很难说... WPF性能套件显示最昂贵的是“未标记时间”,其次是“渲染线程”,但它使用的CPU少了5倍;其他类别不重要。 - levanovd
2个回答

2
在列表框的位置添加一个网格,并在其中放置您的ListBox和动画控件。这样它们就位于同一位置。动画控件应该在z-order的顶部,因此显示出来。一旦ListBox加载完成,您将隐藏动画控件,然后ListBox将显示。每当您需要执行另一个长操作时,您都需要将动画控件设置为可见状态。

2
如何确定列表框已经渲染完成?并且渲染是在与“动画”动画同一线程中执行的,因此不会产生任何影响。或者我错了吗? 我已经在使用这种技术,但当我需要显示一些长时间的后台(在另一个线程中工作)操作(非GUI)正在进行时。 - levanovd

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接