【问题标题】:How to show some animation while control is rendering?如何在控件渲染时显示一些动画?
【发布时间】:2010-12-20 06:36:01
【问题描述】:

我有显示大量数据的 WPF ListBox。我需要平滑滚动,所以我将 ListBox.ScrollViewer.CanContentScroll 设置为 False 以禁用虚拟化。现在,当我打开放置此@​​987654323@ 的选项卡时,几秒钟内我什么也看不到,因为ListBox 正在加载/创建项目/渲染。我还有一个控件,它显示一些动画,表明应用程序正在运行,用户应该稍等一下。

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

【问题讨论】:

  • 也许更多细节会有所帮助?诸如...您正在使用什么语言和框架...不幸的是,很多地方都使用了诸如“ListBox”之类的术语。
  • 你有多少项目在列表中?
  • 大约有 500 项。有带有内部项目控件的列表框。
  • 你知道“加载”、“创建项目”和“渲染”的哪个阶段一直在花费时间吗?
  • 很难说.. WPF Performance Suite 显示最昂贵的是“未标记时间”,而不是“渲染线程”,但它使用的 CPU 少 5 倍;其他类别不重要。

标签: wpf xaml animation listbox rendering


【解决方案1】:

在列表框的位置添加一个 Grid 并将您的 ListBox 和动画控件放入其中。这样它们就被放置在同一个位置。动画控件应位于 z 顺序的顶部并因此显示。一旦 ListBox 完成加载,您将隐藏动画控件,因此 ListBox 将改为显示。每当您需要执行另一个长时间操作时,您都可以再次将动画控件设置为可见。

【讨论】:

  • 如何判断listbox已经渲染了?并且渲染是在“动画”动画的同一线程中执行的,因此不会有任何效果。还是我不对?我已经在使用这种技术,但是当我需要显示一些长背景(在另一个线程中工作)时,操作(非 gui)正在进行中。
【解决方案2】:

Clean shutdown in Silverlight and WPF applications

检查这个应用程序的作者是如何通过代码完成的,也许它可以帮助你,尽管它是不同的场景。

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 2021-06-20
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多