首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有多个用户控件的性能极慢

具有多个用户控件的性能极慢
EN

Stack Overflow用户
提问于 2015-05-11 17:26:41
回答 2查看 1.5K关注 0票数 0

我已经构建了一个与outlook类似的调度应用程序,但是它可以显示多个人的日程安排。我编写了一个用户控件,基本上是一个具有渐变填充背景的边框& TextBlock。这些控件中的一个将添加到画布上,为每次约会设置位置。问题是,我会有多个用户,有多个约会,可能需要一次显示1000个左右的约会。最初,实例化所有这些对象需要一个绝对的年龄,但是,我可以接受这一点。

不幸的是,当我试图浏览约会时,出现了一个大问题。我有几个按钮可以左右滚动,单击这些按钮后,UserControls的左侧位置将被移动到一定数量的像素--在单击按钮和重新绘制之间可能需要几秒钟的时间(我还尝试使用标签测试,但结果是一样的)。

我想这里真正的问题是如何实现一个接口,展示数百个具有足够性能的控件,如果这是无法实现的,我将如何处理这样的UI。

EN

Stack Overflow用户

发布于 2015-05-11 21:51:00

如果没有可靠地再现问题的 code example,即使不是不可能,也很难完全理解您所面临的性能问题,更不用说提供解决方案了。

尽管如此,从您的描述来看,您确实希望向用户提供某种类型的ItemsControl,例如ListBoxListView (ListBox的专门化)。在ItemsControl中,您可以指定一个ItemTemplate,它定义列表中每一项的显示方式;这类似于您现在使用的UserControl

我相信它很可能会很好,仅仅通过改变。也就是说,将每个项目的可视化定义为DataTemplate而不是UserControl,并将ItemTemplate属性(例如,您的ListBox )设置为该模板,然后将约会对象的集合绑定到ListBox.ItemsSource属性。

注意,ListBox类已经默认在其ItemsPanel模板中使用VirtualizingStackPanel。因此,如果使用ListBox,则这种方法在性能上完全没有问题。

如果您想使用不同的ItemsControl或创建自定义的,您可能会发现或者不需要显式地使用虚拟面板对象(例如ListBox使用的VirtualizingStackPanel )。在列表中只有1000个项时,即使是非虚拟化面板也可以,但如果不使用ListBox,则始终可以显式地指定它。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30173960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档