延迟/延迟加载CollectionViewSource?

时间:2010-05-09 17:29:37

标签: wpf performance lazy-loading collectionviewsource deferred-loading

CollectionViewSource部分中创建Resources时,如果资源被初始化(即Source持有者被占用时)或何时加载了Resources数据是绑定的?

是否存在一种使用CollectionViewSource延迟加载的xamly方法?递延负荷?明确的负荷?

1 个答案:

答案 0 :(得分:0)

答案是,只要没有请求,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时项目才会关闭。