关于 syncfusion-wpf-pivot-grid
面向需要构建数据透视表视图和分析界面的开发者,介绍 Syncfusion WPF PivotGrid 的实现。内容涵盖多维汇总、交互式字段与分组控件、筛选、自定义计算、编辑、导出和状态持久化。
主要功能
- 01配置透视行、列与汇总
- 02交互式分组栏和字段列表
- 03筛选与多列排序
- 04自定义计算和表达式字段
- 05编辑、导出与状态持久化
适用场景
- 01构建多维财务报告
- 02按产品、区域和时间分析销售
- 03创建拖放式 BI 仪表板
- 04跨部门比较预算与实际数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ syncfusion/ wpf-ui-components-skills --skill syncfusion-wpf-pivot-grid安装后在 Claude Code 中输入/syncfusion-wpf-pivot-grid确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/advanced-features.mdcontext-menus.mdcustom-calculations.mddata-binding.mdediting-and-updating.mdexporting-and-printing.mdfield-list-and-designer.mdfiltering.mdgetting-started.mdgrouping-bar.mdlayout-and-display.mdpivot-items-and-calculations.mdselection.mdserialization.mdsorting.md详细介绍
实现 Syncfusion WPF PivotGrid
Syncfusion WPF PivotGrid 是一款功能强大、以单元格为中心且可扩展的网格控件,可模拟 Microsoft Excel 的数据透视表功能。它可以透视、汇总和分组关系数据,将数据整理为交叉表形式,非常适合金融领域和业务数据分析。
何时使用此技能
在以下情况下使用此技能:
- 在 WPF 应用程序中实现数据透视表,用于数据分析
- 整理和汇总大型数据集,并以交叉表格式呈现
- 配置数据透视行、列和计算,创建多维数据视图
- 启用交互式数据探索,使用分组栏和字段列表
- 创建商业智能仪表板,进行数据透视分析
- 为数据透视数据添加筛选和排序
- 实现自定义计算和表达式字段
- 导出或打印数据透视网格数据
- 构建财务报告,动态汇总数据
- 启用拖放式数据透视,为最终用户提供灵活性
组件概述
PivotGrid 控件提供全面的数据透视表功能:
- **数据透视:**按行、列和值整理数据
- **交互式 UI:**分组栏、字段列表、架构设计器、值选择器
- **数据操作:**筛选、排序(包括多列排序和按值排序)
- **计算:**内置汇总类型、自定义计算、表达式字段
- **编辑:**单元格级别的编辑和更新
- **自定义:**上下文菜单、布局选项、冻结标题
- **性能:**虚拟化和异步数据加载
- **导出/导入:**数据导出、打印支持、状态序列化
文档与导航指南
入门
📄 阅读:references/getting-started.md
- 安装和程序集引用
- 通过 Designer、XAML 或代码隐藏添加 PivotGrid
- 许可证配置
- PivotGrid 基本设置和首次呈现
- 最简可运行示例
数据绑定
📄 阅读:references/data-binding.md
- 绑定到 List 集合
- 绑定到 DataTable 和 DataView
- 为大型数据集异步加载数据
- ItemSource 配置模式
- 数据源最佳实践
核心概念:PivotItems 和计算
📄 阅读:references/pivot-items-and-calculations.md
- 了解 PivotItem(行和列)
- 用于值字段的 PivotComputationInfo
- 汇总类型(Count、Sum、Average、Min、Max 等)
- FieldHeader、FieldMappingName、TotalHeader 属性
- 计算的格式字符串
- 基本计算示例
筛选
- FilterExpression 类概述
- 在 XAML 和代码隐藏中定义筛选器
- 列筛选
- 类似 Excel 的筛选 UI
- 多个筛选条件
- 筛选表达式语法
排序
- 默认排序行为
- 用于排序逻辑的自定义比较器
- 列排序
- 多列排序
- 按值排序
- 排序事件和自定义
分组栏
📄 阅读:references/grouping-bar.md
- 启用和配置分组栏
- 设置分组栏属性
- 拖放式数据透视功能
- 分组栏上下文菜单
- 自定义和样式设置
字段列表和设计器
📄 阅读:references/field-list-and-designer.md
- PivotGrid 字段列表
- 用于高级配置的 PivotSchemaDesigner
- 将 PivotSchemaDesigner 绑定到 PivotGrid
- Pivot 值选择器
- 在字段列表中设置标题
- 字段管理和自定义
自定义计算
📄 阅读: references/custom-calculations.md
- 自定义计算概览
- 运行时计算字段
- 运行时自定义摘要
- 用于公式的表达式字段
- 高级计算模式
- 自定义摘要实现
编辑和更新
📄 阅读: references/editing-and-updating.md
- 启用单元格编辑
- 更新单元格值
- 编辑事件和验证
- 数据修改模式
上下文菜单
📄 阅读: references/context-menus.md
- 主 PivotGrid 上下文菜单
- 分组栏上下文菜单
- 标题单元格上下文菜单
- 自定义菜单项
- 菜单操作和事件
布局和显示选项
📄 阅读: references/layout-and-display.md
- 网格布局配置
- 冻结标题,使行标题和列标题固定
- 自动调整大小以适应内容
- 限制行标题区域调整大小
- RowPivotsOnly 模式
- 将计算显示为列
- 显示/隐藏小计和总计
- 布局自定义模式
选择
📄 阅读: references/selection.md
- 选择模式
- 单元格和范围选择
- 选择事件
- 以编程方式选择
导出和打印
📄 阅读: references/exporting-and-printing.md
- 导出 PivotGrid 数据
- 支持的导出格式
- 打印功能和打印预览
- 导出配置选项
序列化和状态持久化
📄 阅读: references/serialization.md
- 序列化 PivotGrid 配置
- 反序列化
- 跨会话持久化状态
- 保存和加载 PivotGrid 状态
高级功能
📄 阅读: references/advanced-features.md
- 超链接单元格
- 最内层计算
- 用于访问原始数据的 GetRawItem 方法
- 使用虚拟化提升性能
- 高级场景和边缘情况
快速入门示例
基本的销售数据 PivotGrid
XAML:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
xmlns:local="clr-namespace:YourNamespace"
Title="PivotGrid Example" Height="600" Width="800">
<Window.Resources>
<ObjectDataProvider x:Key="salesData"
ObjectType="{x:Type local:ProductSales}"
MethodName="GetSalesData" />
</Window.Resources>
<Grid>
<syncfusion:PivotGridControl Name="pivotGrid"
ItemSource="{Binding Source={StaticResource salesData}}">
<syncfusion:PivotGridControl.PivotRows>
<syncfusion:PivotItem FieldHeader="Product"
FieldMappingName="Product"
TotalHeader="Total" />
<syncfusion:PivotItem FieldHeader="Date"
FieldMappingName="Date"
TotalHeader="Total" />
</syncfusion:PivotGridControl.PivotRows>
<syncfusion:PivotGridControl.PivotColumns>
<syncfusion:PivotItem FieldHeader="Country"
FieldMappingName="Country"
TotalHeader="Total" />
<syncfusion:PivotItem FieldHeader="State"
FieldMappingName="State"
TotalHeader="Total" />
</syncfusion:PivotGridControl.PivotColumns>
<syncfusion:PivotGridControl.PivotCalculations>
<syncfusion:PivotComputationInfo CalculationName="Total Amount"
FieldName="Amount"
Format="C"
SummaryType="DoubleTotalSum" />
<syncfusion:PivotComputationInfo CalculationName="Quantity"
FieldName="Quantity"
SummaryType="Count" />
</syncfusion:PivotGridControl.PivotCalculations>
</syncfusion:PivotGridControl>
</Grid>
</Window>
代码隐藏(ProductSales.cs):
using System;
using System.Collections.Generic;
public class ProductSales
{
public string Product { get; set; }
public string Date { get; set; }
public string Country { get; set; }
public string State { get; set; }
public int Quantity { get; set; }
public double Amount { get; set; }
public static List<ProductSales> GetSalesData()
{
return new List<ProductSales>
{
new ProductSales { Product = "Bike", Date = "FY 2005", Country = "Canada",
State = "Alberta", Quantity = 5, Amount = 150000 },
new ProductSales { Product = "Car", Date = "FY 2006", Country = "Canada",
State = "Ontario", Quantity = 3, Amount = 90000 },
// Add more data...
};
}
}
常见模式
模式 1:带分组栏的 PivotGrid
启用交互式拖放透视:
<syncfusion:PivotGridControl ShowGroupingBar="True">
</syncfusion:PivotGridControl>
模式 2:代码隐藏配置
以编程方式定义 PivotGrid:
PivotGridControl pivotGrid = new PivotGridControl();
// Add Pivot Rows
pivotGrid.PivotRows.Add(new PivotItem
{
FieldHeader = "Product",
FieldMappingName = "Product",
TotalHeader = "Total"
});
// Add Pivot Columns
pivotGrid.PivotColumns.Add(new PivotItem
{
FieldHeader = "Country",
FieldMappingName = "Country",
TotalHeader = "Total"
});
// Add Calculations
pivotGrid.PivotCalculations.Add(new PivotComputationInfo
{
CalculationName = "Total",
FieldName = "Amount",
Format = "C",
SummaryType = SummaryType.DoubleTotalSum
});
// Set ItemSource
pivotGrid.ItemSource = ProductSales.GetSalesData();
模式 3:筛选数据
应用筛选器以缩小数据的显示范围:
FilterExpression filter = new FilterExpression
{
DimensionHeader = "Product",
DimensionName = "Product",
Name = "ProductFilter",
Expression = "Product = 'Bike'"
};
pivotGrid.Filters.Add(filter);
模式 4:自定义排序
使用自定义比较器实现特定的排序逻辑:
public class ReverseOrderComparer : IComparer
{
public int Compare(object x, object y)
{
return -x.ToString().CompareTo(y.ToString());
}
}
// Apply to PivotItem
PivotItem item = new PivotItem
{
FieldHeader = "Product",
FieldMappingName = "Product",
Comparer = new ReverseOrderComparer()
};
关键属性
PivotGridControl 属性
- ItemSource:透视网格的数据源
- PivotRows:行维度的 PivotItems 集合
- PivotColumns:列维度的 PivotItems 集合
- PivotCalculations:用于值计算的 PivotComputationInfo 集合
- Filters:用于筛选数据的 FilterExpression 集合
- ShowGroupingBar:启用/禁用分组栏
- ShowFieldList:启用/禁用字段列表
PivotItem 属性
- FieldHeader:显示的标题文本
- FieldMappingName:要从数据源绑定的属性名称
- TotalHeader:总计行/列的标题文本
- Comparer:用于排序的自定义比较器
PivotComputationInfo 属性
- CalculationName:计算的显示名称
- FieldName:要计算的属性名称
- SummaryType:聚合类型(Count、Sum、Average 等)
- Format:显示格式字符串(例如,货币格式使用 "C")
常见用例
财务报告
按产品、地区和时间段对收入、支出和盈利能力进行多维分析,创建全面的财务报告。
销售分析
借助动态透视和下钻功能,按产品、区域和时间段分析销售业绩。
商业智能仪表板
构建交互式 BI 仪表板,让用户通过分组栏和字段列表进行拖放透视,以探索数据。
库存管理
跟踪不同仓库、产品和时间段的库存水平、流动情况及成本。
预算分析
按部门、成本中心和财务期间比较预算与实际数据,并计算差异。
相关组件
- PivotSchemaDesigner:高级配置界面
- PivotGrid Field List:交互式字段管理
- Grouping Bar:拖放透视界面
程序集要求
WPF PivotGrid 所需的程序集:
Syncfusion.Grid.WpfSyncfusion.GridCommon.WpfSyncfusion.Linq.BaseSyncfusion.PivotAnalysis.BaseSyncfusion.PivotAnalysis.WpfSyncfusion.Shared.Wpf
NuGet 包安装
- 重要:使用版本 *(最新可用版本)。
通过 NuGet 包管理器安装:
Install-Package Syncfusion.PivotTable.wpf
或通过 .NET CLI 安装:
dotnet add package Syncfusion.PivotTable.wpf
NuGet 包会自动包含所有必需的依赖项。
命名空间导入
using Syncfusion.Windows.Controls.PivotGrid;
using Syncfusion.PivotAnalysis.Base;
请导航至上方相应的参考文件,获取特定功能的详细实现指南。