【问题标题】: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 时,项目才会关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 2014-03-06
      • 2021-07-13
      • 2010-11-26
      相关资源
      最近更新 更多