【问题标题】:Lazy/deferred loading of a CollectionViewSource?CollectionViewSource 的延迟/延迟加载?
【发布时间】:2010-05-09 17:29:36
【问题描述】:
当您在Resources 部分中创建CollectionViewSource 时,是在资源初始化(即Resources 持有者初始化时)还是绑定数据时加载集合Source?
有没有一种方法可以制作CollectionViewSource 延迟加载?延迟加载?显式加载?
【问题讨论】:
标签:
wpf
performance
lazy-loading
collectionviewsource
deferred-loading
【解决方案1】:
答案是,只要没有请求,CollectionViewSource 就不会初始化其Source 属性!
这是我的测试示例:
<Window
x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:WpfApplication2">
<Window.Resources>
<CollectionViewSource x:Key="mySource">
<CollectionViewSource.Source>
<src:Collection />
</CollectionViewSource.Source>
</CollectionViewSource>
</Window.Resources>
<!--ListView ItemsSource="{Binding Source={StaticResource mySource}}"/-->
</Window>
Imports System.Collections.ObjectModel
Imports System.ComponentModel
Public Class Collection : Inherits ObservableCollection(Of String)
Public Sub New()
If Not DesignerProperties.GetIsInDesignMode(New DependencyObject) Then End
For i = 1 To 10
Add("Item " & i)
Next
End Sub
End Class
结果:仅当取消注释 ListView 时,项目才会关闭。