SuperAPI AI 工具集

syncfusion-maui-datapager

前端与建站

查看项目

更新于 10-16 04:01

技能介绍

Syncfusion .NET MAUI DataPager 技能

用途

该技能用于实现和自定义 Syncfusion .NET MAUI DataPager(SfDataPager)控件。SfDataPager 是一个独立分页控件,可将大型数据集拆分为可管理的页面,并与 SfDataGrid 等数据显示控件无缝集成。

适用场景包括:

  • 在 .NET MAUI 应用中以分页视图显示大型数据集
  • 为 SfDataGrid 或任意项控件添加分页
  • 在普通分页(一次性加载全部)与按需分页(逐页加载)之间选择
  • 配置数字按钮与导航按钮(First、Last、Previous、Next)
  • 控制按钮形状、大小、字体大小或方向
  • 用自定义颜色或按钮模板设置分页器样式
  • 处理页面导航事件(PageChanging、PageChanged)
  • 以编程方式导航页面(MoveToFirstPage、MoveToPage 等)
  • 为大量页码启用自动省略号
  • 通过 ResetCache 优化超大数据集的内存

组件概览

核心能力:

  • 普通与按需两种分页模式
  • First、Last、Previous、Next 及数字按钮导航
  • 编程式页面切换(MoveToFirstPage、MoveToLastPage、MoveToNextPage、MoveToPreviousPage、MoveToPage)
  • 可自定义的显示模式(选择显示哪些按钮)
  • 按钮形状、大小与字体大小自定义
  • 水平或垂直方向
  • 大量页码范围的自动省略号支持
  • 通过 DataPagerStyle 实现全面的样式与模板自定义
  • PageChanging 与 PageChanged 事件
  • 按需分页下通过 ResetCache 进行内存优化

数据流:

  1. 将数据集合绑定到 SfDataPager.Source
  2. SfDataPager.PagedSource 暴露当前页数据
  3. 将 PagedSource 绑定到显示控件的 ItemsSource(例如 SfDataGrid)

NuGet 包:Syncfusion.Maui.DataPager

入门

前置条件包括 .NET 9 SDK 以及 Visual Studio / VS Code / Rider。主要步骤:

  • 安装 Syncfusion.Maui.DataPager NuGet 包
  • 在 MauiProgram.cs 中注册 Syncfusion 核心处理程序:builder.ConfigureSyncfusionCore();
  • 导入 DataPager 命名空间(XAML 与 C#)
  • 创建数据模型(OrderInfo)与仓库(OrderInfoRepository)
  • 添加 SfDataPager 与 SfDataGrid(XAML 与 C#)
  • 使用 Source 到 PagedSource 的绑定模式

注意:忘记调用 ConfigureSyncfusionCore() 会导致渲染 DataPager 时出现运行时错误。

XAML 命名空间:

xmlns:pager="clr-namespace:Syncfusion.Maui.DataPager;assembly=Syncfusion.Maui.DataPager"

分页模式与导航

  • 普通分页(一次性预先加载整个集合)
  • 按需分页(UseOnDemandPaging、OnDemandLoading 事件)
  • LoadDynamicItems(StartIndex, PageSize)
  • 按需分页下的 PageCount(替代 Source)
  • ResetCache() 用于内存优化
  • 编程式导航(MoveToFirstPage、MoveToLastPage、MoveToNextPage、MoveToPreviousPage、MoveToPage)
  • 动画页面导航(带 duration 的 MoveToPage)
  • 边界行为(在第一页/最后一页不抛出异常)

自定义

  • ButtonShape(Rectangle、Circle)
  • NumericButtonsGenerateMode(Auto,或通过 NumericButtonCount 显式指定)
  • ButtonSize 与 ButtonFontSize
  • DisplayMode(None、First、Last、Previous、Next、Numeric 及其组合)
  • AutoEllipsisMode(None、Before、After、Both)
  • AutoEllipsisText 自定义
  • Orientation(Horizontal、Vertical)

外观与样式

  • DataPagerStyle 概览与 DefaultStyle 赋值
  • 背景颜色(DataPager、导航按钮、数字按钮)
  • 选中颜色(数字按钮选中背景与文字)
  • 禁用状态导航按钮颜色
  • 导航按钮模板(FirstPageButtonTemplate、LastPageButtonTemplate、NextPageButtonTemplate、PreviousPageButtonTemplate)

事件

  • PageChanging 事件(PageChangingEventArgs:OldPageIndex、NewPageIndex)
  • PageChanged 事件(PageChangedEventArgs:OldPageIndex、NewPageIndex)
  • 各自的使用时机(导航前与导航后)
  • 事件处理程序签名与接线(XAML 与 C#)

快速开始

以下为绑定到集合并与 SfDataGrid 搭配的最小示例:

using Syncfusion.Maui.DataPager;
using Syncfusion.Maui.DataGrid;
using System.Collections.ObjectModel;

public class OrderInfo
{
    public string? OrderID { get; set; }
    public string? CustomerID { get; set; }
    public string? ShipCountry { get; set; }

    public OrderInfo(string orderId, string customerId, string country)
    {
        OrderID = orderId;
        CustomerID = customerId;
        ShipCountry = country;
    }
}

var orders = new ObservableCollection<OrderInfo>
{
    new OrderInfo("1001", "Maria Anders", "Germany"),
    new OrderInfo("1002", "Ana Trujillo", "Mexico"),
    new OrderInfo("1003", "Ant Fuller", "Mexico"),
    // ... more items
};

SfDataPager dataPager = new SfDataPager();
dataPager.PageSize = 15;
dataPager.NumericButtonCount = 10;
dataPager.Source = orders;

SfDataGrid dataGrid = new SfDataGrid();
dataGrid.ItemsSource = dataPager.PagedSource;

this.Content = dataGrid;

常见模式

将 DataGrid 绑定到分页数据:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <syncfusion:SfDataGrid x:Name="dataGrid"
                           Grid.Row="0"
                           ItemsSource="{Binding Source={x:Reference dataPager}, Path=PagedSource}" />
    <Border Grid.Row="1" Padding="5">
        <pager:SfDataPager x:Name="dataPager"
                           PageSize="15"
                           NumericButtonCount="10"
                           Source="{Binding Orders}" />
    </Border>
</Grid>

按需加载页面:

dataPager.UseOnDemandPaging = true;
dataPager.PageCount = 67; // total pages, e.g. 1000 items / 15 per page
dataPager.OnDemandLoading += (sender, e) =>
{
    dataPager.LoadDynamicItems(e.StartIndex, orders.Skip(e.StartIndex).Take(e.PageSize));
};

编程式导航:

dataPager.MoveToFirstPage();
dataPager.MoveToPreviousPage();
dataPager.MoveToNextPage();
dataPager.MoveToLastPage();
dataPager.MoveToPage(5);
// Animated navigation: MoveToPage(pageIndex, durationMs, animate)
dataPager.MoveToPage(5, 300, true);

设置分页器样式:

DataPagerStyle style = new DataPagerStyle();
style.NumericButtonSelectionBackgroundColor = Color.FromArgb("#CDB4DB");
style.NumericButtonBackgroundColor = Color.FromArgb("#FFC8DD");
style.NavigationButtonBackgroundColor = Color.FromArgb("#90E0EF");
style.NavigationButtonIconColor = Color.FromArgb("#0077B6");
dataPager.DefaultStyle = style;

选择正确的参考文档

  • 首次设置 DataPager:references/getting-started.md
  • 选择普通或按需分页、导航页面:references/paging-modes.md
  • 更改按钮形状、大小、显示模式、省略号或方向:references/customization.md
  • 应用颜色、样式或按钮模板:references/appearance.md
  • 处理页面切换事件:references/events.md

限制

资料未提供该技能的具体收费、价格、平台兼容性明细或效果承诺,这些信息暂未提供。