关于 syncfusion-wpf-smart-datagrid
面向 WPF 开发者的 Syncfusion SfSmartDataGrid 实现指南,通过自然语言提示执行数据操作。内容涵盖排序、筛选、分组、突出显示,以及 AssistView 和 Azure OpenAI 服务配置。
主要功能
- 01自然语言排序与分组
- 02按条件筛选数据
- 03突出显示行或单元格
- 04通过 AssistView 输入提示词
- 05自定义提示建议与初始操作
- 06以自然语言命令导出数据
适用场景
- 01用提示词筛选和分析业务数据
- 02突出显示订单或库存异常
- 03对销售数据分组并排序
- 04筛选数据后导出 Excel 或 PDF
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ syncfusion/ wpf-ui-components-skills --skill syncfusion-wpf-smart-datagrid安装后在 Claude Code 中输入/syncfusion-wpf-smart-datagrid确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/ai-exporting.mdai-filtering-highlighting.mdai-service-setup.mdai-sorting-grouping.mdcustomization-events.mddata-model-binding.mdgetting-started.md详细介绍
实现 Syncfusion WPF Smart DataGrid
本技能将指导你实现 Syncfusion WPF Smart DataGrid(SfSmartDataGrid)。这是一个 AI 驱动的数据网格控件,支持通过自然语言进行排序、筛选、分组和突出显示。Smart DataGrid 可以解读用户提示词并执行上下文感知操作,让复杂的数据操作变得直观且高效。
何时使用此技能
当用户需要以下功能时,请使用此技能:
- 在 WPF 应用程序中实现 AI 驱动的数据网格,并支持自然语言命令
- 支持通过自然语言排序、筛选、分组或突出显示,而无需手动配置
- 设置 Azure OpenAI 集成,以启用网格智能功能
- 创建数据驱动的应用程序,让用户通过对话式提示词与网格交互
- 通过单条文本命令执行多列操作(排序、筛选、分组)
- 使用 AssistView 和建议提示词构建直观的数据探索界面
- 自定义 AI 行为,例如突出显示颜色、初始提示词,或启用/禁用智能操作
对于借助 AI 简化用户与复杂数据集交互的现代 WPF 数据应用程序,此技能至关重要。
组件概述
SfSmartDataGrid 在传统数据网格功能的基础上增加了以下能力:
- AI 排序 —— 使用自然语言对数据排序(例如,“按城市降序排序”)
- 智能筛选 —— 使用自然语言条件进行筛选(例如,“筛选 Country 等于 Germany 且 Revenue > 1000 的数据”)
- 智能分组 —— 使用 AI 提示词整理数据(例如,“按 Country 和 ShipCity 分组”)
- 行和单元格突出显示 —— 通过描述条件强调数据(例如,“将 Total > 1000 的行突出显示为 LightPink”)
- AssistView 集成 —— 用于输入提示词和查看 AI 响应的聊天式界面
- 可自定义的建议 —— 预定义的提示词,引导用户执行常见操作
文档和导航指南
入门
📄 阅读: references/getting-started.md
- 创建新的 WPF Smart DataGrid 项目
- 安装所需的 NuGet 包(Syncfusion.SfSmartComponents.WPF)
- 了解程序集依赖项(Syncfusion.Data.WPF、Syncfusion.SfGrid.WPF 等)
- 通过 Designer、XAML 或 C# 添加控件
- 网格的基本初始化和设置
数据模型和绑定
📄 阅读: references/data-model-binding.md
- 使用 INotifyPropertyChanged 创建数据模型类
- 使用 ObservableCollection 构建 ViewModel
- 将 ItemsSource 绑定到数据集合
- 配置列(GridTextColumn、GridNumericColumn、GridDateTimeColumn)
- 使用 AutoGenerateColumns 或手动定义列
- 设置 CurrentUser,以区分 AssistView 中的消息
AI 服务设置
📄 阅读: references/ai-service-setup.md
- 在 App.xaml.cs 中注册 Azure OpenAI 服务
- 使用 API 密钥和终结点配置 AzureOpenAIClient
- 设置用于 AI 集成的 IChatClient
- 使用 SyncfusionAIExtension 配置 AI 服务
- 排查 AI 服务连接问题
AI 排序和分组
📄 阅读: references/ai-sorting-grouping.md
- 使用自然语言执行单列和多列排序
- 通过提示词应用升序和降序排序
- 使用命令清除排序
- 使用 AI 创建单层和多层分组
- 组合多个分组操作
- 通过清除命令移除分组
AI 筛选与高亮
📄 阅读: references/ai-filtering-highlighting.md
- 使用自然语言条件应用筛选
- 使用筛选运算符(equals、contains、greaterThan、lessThan、between)
- 使用 AND/OR 逻辑组合筛选条件
- 清除已应用的筛选
- 根据条件高亮行和单元格
- 为高亮指定自定义颜色(名称、十六进制、RGB)
- 使用默认高亮画笔
- 有选择地清除高亮(全部、仅行、仅单元格)
AI 导出
📄 阅读: references/ai-exporting.md
- 使用自然语言命令将网格数据导出为 Excel 格式
- 使用自然语言命令将网格数据导出为 PDF 格式
- 同时导出为 Excel 和 PDF 格式
- 了解导出中包含的数据(筛选、排序、可见行)
- 导出命令的自然语言语法模式
- 根据使用场景选择合适的格式(Excel 用于分析,PDF 用于归档)
- 导出当前状态下经过筛选和排序的数据
自定义与事件
📄 阅读: references/customization-events.md
- 设置 CurrentUser 以区分消息
- 配置 Suggestions 以提供预定义提示词
- 使用 Prompt 属性自动执行初始命令
- 使用 EnableSmartActions 启用或禁用智能操作
- 自定义 HighlightBrush 以突出显示内容
- 使用 ExecutePrompt 方法以编程方式执行提示词
- 处理 AssistViewRequest 事件以拦截或取消请求
快速入门示例
以下是一个用于设置 AI 驱动的 Smart DataGrid 的最简示例:
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:WpfApplication1"
Title="Smart DataGrid Demo" Height="600" Width="900">
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
<Grid>
<syncfusion:SfSmartDataGrid x:Name="SmartGrid"
ItemsSource="{Binding OrderInfoCollection}"
CurrentUser="{Binding CurrentUser}"
Suggestions="{Binding AiSuggestions}"
EnableSmartActions="True"
ColumnSizer="Star">
<syncfusion:SfSmartDataGrid.Columns>
<syncfusion:GridNumericColumn MappingName="OrderID" HeaderText="Order ID"/>
<syncfusion:GridTextColumn MappingName="CustomerName" HeaderText="Customer"/>
<syncfusion:GridTextColumn MappingName="ProductName" HeaderText="Product"/>
<syncfusion:GridNumericColumn MappingName="Quantity"/>
<syncfusion:GridNumericColumn MappingName="Freight"/>
</syncfusion:SfSmartDataGrid.Columns>
</syncfusion:SfSmartDataGrid>
</Grid>
</Window>
App.xaml.cs(AI 服务注册):
using Azure.AI.OpenAI;
using Microsoft.Extensions.AI;
using Microsoft.Extensions.DependencyInjection;
using Syncfusion.UI.Xaml.SmartComponents;
using System.ClientModel;
using System.Windows;
public partial class App : Application
{
public App()
{
string azureApiKey = "<YOUR-API-KEY>";
Uri azureEndpoint = new Uri("<YOUR-ENDPOINT>");
string deploymentName = "<YOUR-DEPLOYMENT>";
AzureOpenAIClient azureClient = new AzureOpenAIClient(
azureEndpoint,
new ApiKeyCredential(azureApiKey)
);
IChatClient chatClient = azureClient
.GetChatClient(deploymentName)
.AsIChatClient();
SyncfusionAIExtension.Services.AddSingleton<IChatClient>(chatClient);
SyncfusionAIExtension.ConfigureSyncfusionAIServices();
}
}
常见模式
模式 1:自然语言排序
用户需求: 无需手动配置即可按多个列排序。
提示词示例:
"sort by city in descending""sort by city column in descending and Revenue ascending""clear sorting"
使用场景: 用户希望通过文本命令快速、直观地进行排序。
模式 2:使用条件进行智能筛选
用户需求: 使用自然语言应用复杂筛选。
提示词示例:
"filter Country equals Germany""filter Country equals Germany AND Revenue greaterThan 1000""filter OrderID between 20251001 and 20251020""clear filters"
使用场景: 用户需要根据条件筛选数据,而不想手动构建谓词。
模式 3:多层分组
用户需求: 按层次结构组织数据。
提示词示例:
"group by Country""group by Country and ShipCity""clear grouping"
使用场景: 用户希望在结构化的嵌套分组中分析数据。
模式 4:条件高亮
用户需求: 以视觉方式突出显示重要数据。
提示词示例:
"highlight rows where Total > 1000 color LightPink""highlight cells in OrderID lessThan 1005 color Red""highlight rows where Total > 1000 color LightPink AND highlight cells in OrderID lessThan 1005 color Red""clear highlight"/"clear row highlight"/"clear cell highlight"
使用场景: 用户希望为关键数据点添加视觉提示。
模式 5:以编程方式执行提示词
用户需求: 无需打开 AssistView 即可执行 AI 操作。
实现:
// Execute prompt directly from code
SmartGrid.ExecutePrompt("Sort the OrderID by Descending");
SmartGrid.ExecutePrompt("filter PaymentStatus equals Not Paid");
使用场景: 通过应用逻辑触发 AI 操作的编程工作流。
模式 6:拦截和验证请求
用户需求: 在执行 AI 请求前对其进行控制或验证。
实现:
SmartGrid.AssistViewRequest += (sender, e) =>
{
// Access the prompt
string userPrompt = e.Prompt;
// Optionally cancel the request
if (userPrompt.Contains("forbidden"))
{
e.Cancel = true;
}
};
使用场景: 需要验证、记录或阻止某些 AI 操作。
关键属性
| 属性 | 类型 | 用途 |
|---|---|---|
ItemsSource | IEnumerable | 网格的数据源 |
CurrentUser | Author | 指定用于 AssistView 消息对齐的用户(必需) |
Suggestions | ObservableCollection<string> | 在 AssistView 中显示的预定义提示词 |
Prompt | string | 打开 AssistView 时自动执行的初始提示词 |
EnableSmartActions | bool | 启用或禁用 AI 驱动的操作(默认值:false)。自然语言排序、筛选、分组和高亮等智能/AI 功能均需启用此项。此功能属于 Syncfusion.SfSmartComponents.WPF 程序集(有关程序集的详细信息,请参见 docs/getting-started.md)。 |
HighlightBrush | SolidColorBrush | 未指定颜色时用于高亮显示的默认画笔 |
AutoGenerateColumns | bool | 根据数据模型属性自动生成列 |
ColumnSizer | GridLengthUnitType | 列宽调整模式(Star、Auto、None) |
关键方法
| 方法 | 用途 |
|---|---|
ExecutePrompt(string prompt) | 以编程方式执行 AI 操作,无需 AssistView |
关键事件
| 事件 | 用途 |
|---|---|
AssistViewRequest | 用户发送请求时触发;提供取消选项 |
常见用例
- 商业智能仪表板 – 让分析师通过自然语言查询探索数据
- 订单管理系统 – 允许用户通过对话式命令筛选、排序和高亮订单
- 财务报告 – 对财务数据分析应用复杂筛选和分组
- 客户关系管理(CRM) – 使用直观的提示词查询客户数据
- 库存管理 – 通过高亮快速识别关键库存水平
- 销售分析 – 按地区、产品或时间段对销售数据进行分组和排序
- 日志查看器 – 使用自然语言条件筛选日志
- 数据导出工具 – 使用 AI 命令在导出前预先筛选数据
后续步骤
实现 Smart DataGrid 后:
- 配置建议提示词,引导用户执行常见操作
- 测试 AI 服务的连接情况和响应准确性
- 自定义高亮颜色,使其与应用主题相匹配
- 通过 AssistViewRequest 事件验证用户提示词
- 探索以编程方式执行提示词,实现自动化工作流