【发布时间】:2017-07-07 06:23:58
【问题描述】:
当列表框项目出现时,是否有事件告诉我?
我遇到的问题是我可以将数千个元素设置为我的ListBox.ItemSource。每个元素都会生成一个位图(这需要一段时间),所以如果我只是将这个位图生成放在构造函数中,那么创建集合将需要很长时间才能创建。相反,我想在项目出现时推迟位图生成。
有没有办法做到这一点?理想情况下,我不希望遍历所有项目并检查它们是否可见。
【问题讨论】:
-
您的 ListBox 应该有一个带有 Image 控件的 ItemTemplate。该 Image 控件的 Source 属性应绑定到视图模型项类中的属性。由于虚拟化,绑定不会被初始化,也不会在项目实际变得可见之前访问源属性,因此会创建一个 ListBoxItem 容器。关键是视图模型项在调用属性getter之前不会创建位图。