Back to Devexpress

InfiniteAsyncSource Class

wpf-devexpress-dot-xpf-dot-data.md

latest7.6 KB
Original Source

InfiniteAsyncSource Class

A virtual source component that allows you to bind the GridControl to a data source and display data with infinite scrolling.

Namespace : DevExpress.Xpf.Data

Assembly : DevExpress.Xpf.Core.v25.2.dll

NuGet Package : DevExpress.Wpf.Core

Declaration

csharp
public sealed class InfiniteAsyncSource :
    InfiniteSourceBase,
    IEditableCollectionView
vb
Public NotInheritable Class InfiniteAsyncSource
    Inherits InfiniteSourceBase
    Implements IEditableCollectionView

Remarks

Run Demo: Infinite Scrolling Source

View Example: How to Bind to InfiniteAsyncSource

Read Tutorial: How to Use Virtual Sources Read Tutorial: How to Bind to a Custom Service with Restrictions

Workflow

The InfiniteAsyncSource raises events in the UI Thread and uses tasks to process data in parallel Working Threads. You should provide tasks to these events to obtain summaries, rows, etc. and enable the UI Thread to get data you fetched.

  1. (Optional step) The InfiniteAsyncSource raises the InfiniteAsyncSource.GetTotalSummaries event. Handle this event and process summaries if you want to show them in the GridControl.
  2. The InfiniteAsyncSource raises the InfiniteAsyncSource.FetchRows event to get the first portion of data.
  3. When end users navigate to the next page, the InfiniteAsyncSource raises the InfiniteAsyncSource.FetchRows event to get the next portion of data.
  4. (Optional step) When end users apply a filter, the InfiniteAsyncSource raises the InfiniteAsyncSource.GetUniqueValues event to get unique values and show them in a drop-down filter.

You can maintain a clean MVVM pattern and specify operations above in a ViewModel. To do this, create a command and bind it to the corresponding property:

EventPropertyDescription
GetTotalSummariesGetTotalSummariesCommandGets or sets a command that allows you to get total summaries.
FetchRowsFetchRowsCommandGets or sets a command that allows you to fetch rows.
GetUniqueValuesGetUniqueValuesCommandGets or sets a command that allows you to get unique values.

The following code snippets (auto-collected from DevExpress Examples) contain references to the InfiniteAsyncSource class.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

how-to-bind-wpf-grid-to-data/CS/ViewModel/EFCore/InfiniteAsyncSource/MainWindow.xaml#L17

xml
<dxg:GridControl.ItemsSource>
    <dx:InfiniteAsyncSource ElementType="local_issues:Issue" KeyProperty="Id"
                            FetchRowsCommand="{Binding FetchRowsCommand}" GetTotalSummariesCommand="{Binding GetTotalSummariesCommand}" />

wpf-data-grid-implement-crud-operations/CS/ViewModel/EFCore/InfiniteAsyncSource/MainWindow.xaml#L34

xml
<dxg:GridControl.ItemsSource>
    <dx:InfiniteAsyncSource ElementType="local_issues:Issue" KeyProperty="Id"
                            FetchRowsCommand="{Binding FetchRowsCommand}" GetTotalSummariesCommand="{Binding GetTotalSummariesCommand}" />

how-to-bind-to-grpc/CS/InfiniteAsyncSource.GRPC/MainWindow.xaml#L23

xml
<dxg:GridControl.ItemsSource>
  <dx:InfiniteAsyncSource ElementType="{x:Type issuesdata:Issue}"
                                  FetchRowsCommand="{Binding FetchIssuesCommand}"

wpf-data-grid-bind-to-infiniteasyncsource/CS/InfiniteAsyncSourceMVVMSample/MainWindow.xaml#L21

xml
<dxg:GridControl.ItemsSource>
    <dx:InfiniteAsyncSource ElementType="{x:Type local:IssueData}"
                            FetchRowsCommand="{Binding FetchIssuesCommand}"

wpf-bind-gridcontrol-to-dynamic-data/CS/VirtualSources.InfiniteAsyncSource/MainWindow.xaml#L17

xml
<dxg:GridControl.ItemsSource>
    <dx:InfiniteAsyncSource CustomProperties="{Binding CustomFields}" FetchRowsCommand="{Binding FetchRowsCommand}" />
</dxg:GridControl.ItemsSource>

Inheritance

Object DispatcherObject DependencyObject ContentElement FrameworkContentElement DXFrameworkContentElement VirtualSourceBase InfiniteSourceBase InfiniteAsyncSource

See Also

InfiniteAsyncSource Members

DevExpress.Xpf.Data Namespace