Telerik UI for WPF?下载30天免费试用

使用数据虚拟化

由于处理大量数据的情况相当普遍,对快速数据处理的要求变得越来越不可缺少。这种必要性的结果是数据虚拟化技术,确保更好的性能和用户体验的改进。

虚拟收藏是为只读的目的仅用于其他需要更新的场景,不建议使用。添加/插入场景VirtualQueryableCollectionView不支持,因为它不能维护已加载项的缓存。

当使用支持UI虚拟化的UI组件时,您可以通过使用VirtualQueryableCollectionView类。它使您能够从随需应变的数据加载中受益,以平滑地滚动UI虚拟组件。VirtualQueryableCollectionView为您提供以下重要成员:

  • LoadSize:获取或设置一个值,该值定义一次请求的最大项数。

  • VirtualItemCount:获取或设置一个值,该值定义服务器端可用项的总数。

  • ShouldEnumeratorLoadItems:获取或设置一个值,该值指示在遍历集合的枚举数时是否加载尚未加载的项。

  • ItemsLoading:当集合在某个索引处请求项且该项尚未加载时将引发的事件。该事件中的参数如下:

    • StartIndex:请求项索引。
    • ItemCount:请求项数(可以小于或等于LoadSize)。

当使用VirtualQueryableCollectionView对于WPF,你可以很容易地受益于内置的排序,分组,过滤等功能,如果你提供这个IQueryable作为一个源和集合LoadSize属性设置为期望值。例如:

例1:在VirtualQueryableCollectionView中包装查询

public MainWindow() {InitializeComponent();var context = new NorthwindEntities();var query = context.Order_Details。orderid (o => o. orderid);var view = new VirtualQueryableCollectionView(查询){LoadSize = 10};DataContext = view;}
Public Sub New() InitializeComponent() Dim context = New NorthwindEntities() Dim query = context. order_details . orderby (Function(o) . orderid) Dim view = New VirtualQueryableCollectionView(query) With {_ Key .LoadSize = 10 _} DataContext = view结束Sub .LoadSize

在上面的例子中使用了实体框架。但是,您可以以同样的方式使用Linq to SQL、OpenAccess或任何其他Linq提供者。

ScrollMode配置为Deferred,则ScrollPositionIndicator将在用户垂直滚动时显示。它的内容将是一个空值,直到用户将滚动条释放到特定位置,以便实际加载要显示到视图中的项。为了避免这种情况,你可以永远隐藏指示器为这个视觉元素定义一个样式,将其不透明度设置为0。

例2:绑定RadGridView

目前支持数据虚拟化的控件有RadGridViewRadComboBoxRadTreeViewRadCarousel,RadBook

过滤仅支持这个IQueryable数据源。

过滤属性时,不完全支持VirtualQueryableCollectionView.我们建议配置GridViewDataColumnShowDistinctFilters = " False ".这样只会启用通过字段过滤器进行过滤。你可以查阅基本过滤节作为筛选支持的参考。在那里,您还可以找到有关如何筛选场过滤器

ItemsLoading事件

ItemsLoading如果您试图按索引访问某些项,而该项尚未加载,则将引发事件。向下滚动时,将调用ItemsLoading事件,集合中的空(null)项将被新项替换。当一个项已经加载时,集合将不会为此项调用ItemsLoading事件。

当你在VirtualQueryableCollectionView中提供IQueryable时,你不需要处理ItemsLoading事件。

ScrollMode配置为Deferred,则ScrollPositionIndicator将在用户垂直滚动时显示。它的内容将是一个空值,直到用户将滚动条释放到特定位置,以便实际加载要显示到视图中的项。为了避免这种情况,你可以永远隐藏指示器为这个视觉元素定义一个样式,将其不透明度设置为0。

查看WPF演示在这里。

你也可以检查这个博客。

另请参阅

在本文中
Baidu
map