【问题标题】:WPF optimization: Insert/Delete child from StackPanelWPF 优化:从 StackPanel 插入/删除子项
【发布时间】:2012-06-20 19:19:34
【问题描述】:

我经常在StackPanel 中插入/删除 20-30 个非常复杂的用户控件。 所有用户控件都已创建并缓存以供重用。在重用控件之前,我会清理旧的父级并记住控件。

StackPanel.Children.RemoveStackPanel.Children.Add 这样的操作在我的场景中需要很长时间。

如何优化这些操作?例如。一次插入StackPanel 中的所有控件,还是在集合修改期间冻结通知?

谁知道wpf优化升级的有用文章(MSDN除外)?

【问题讨论】:

    标签: wpf user-controls stackpanel


    【解决方案1】:

    您可以覆盖 ObservableCollectionOnCollectionChanged() 事件处理程序,以同时禁用事件处理,或将事件排队以供稍后处理。

    看这里的帖子,答案可以帮助你 - https://stackoverflow.com/a/5491534/903056

    【讨论】:

    • 我怎么知道 StackPanel 不使用 ObservableCollection 进行内部实现。它使用 UIElementCollection,我不知道如何自定义此集合
    • 我假设 StackPanel 中的项目绑定到 ObservableCollection(在 MVVM 中经常这样做)。
    【解决方案2】:

    我假设您需要研究虚拟化 UI 或数据加载(如果有)策略。

    在这种特定情况下,使用 VirtualizingStackPanel 之类的控件来减少 UI 绘制的内容。您可以在this博客上了解更多信息。

    【讨论】:

    • 我是如何写的,我在容器中只使用了大约 20 个控件。问题是我的孩子控制很复杂。而且我认为每次插入都会导致已插入控件的水流通知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2011-10-25
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多