mcpField
S
syncfusion-wpf-smart-datagrid

syncfusion-wpf-smart-datagrid

github.com/syncfusion数据与数据库5125 次安装2 周前更新
代码仓库

关于 syncfusion-wpf-smart-datagrid

面向 WPF 开发者的 Syncfusion SfSmartDataGrid 实现指南,通过自然语言提示执行数据操作。内容涵盖排序、筛选、分组、突出显示,以及 AssistView 和 Azure OpenAI 服务配置。

主要功能

  1. 01自然语言排序与分组
  2. 02按条件筛选数据
  3. 03突出显示行或单元格
  4. 04通过 AssistView 输入提示词
  5. 05自定义提示建议与初始操作
  6. 06以自然语言命令导出数据

适用场景

  1. 01用提示词筛选和分析业务数据
  2. 02突出显示订单或库存异常
  3. 03对销售数据分组并排序
  4. 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.md
ai-filtering-highlighting.md
ai-service-setup.md
ai-sorting-grouping.md
customization-events.md
data-model-binding.md
getting-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 操作。

关键属性

属性类型用途
ItemsSourceIEnumerable网格的数据源
CurrentUserAuthor指定用于 AssistView 消息对齐的用户(必需)
SuggestionsObservableCollection<string>在 AssistView 中显示的预定义提示词
Promptstring打开 AssistView 时自动执行的初始提示词
EnableSmartActionsbool启用或禁用 AI 驱动的操作(默认值:false)。自然语言排序、筛选、分组和高亮等智能/AI 功能均需启用此项。此功能属于 Syncfusion.SfSmartComponents.WPF 程序集(有关程序集的详细信息,请参见 docs/getting-started.md)。
HighlightBrushSolidColorBrush未指定颜色时用于高亮显示的默认画笔
AutoGenerateColumnsbool根据数据模型属性自动生成列
ColumnSizerGridLengthUnitType列宽调整模式(Star、Auto、None)

关键方法

方法用途
ExecutePrompt(string prompt)以编程方式执行 AI 操作,无需 AssistView

关键事件

事件用途
AssistViewRequest用户发送请求时触发;提供取消选项

常见用例

  1. 商业智能仪表板 – 让分析师通过自然语言查询探索数据
  2. 订单管理系统 – 允许用户通过对话式命令筛选、排序和高亮订单
  3. 财务报告 – 对财务数据分析应用复杂筛选和分组
  4. 客户关系管理(CRM) – 使用直观的提示词查询客户数据
  5. 库存管理 – 通过高亮快速识别关键库存水平
  6. 销售分析 – 按地区、产品或时间段对销售数据进行分组和排序
  7. 日志查看器 – 使用自然语言条件筛选日志
  8. 数据导出工具 – 使用 AI 命令在导出前预先筛选数据

后续步骤

实现 Smart DataGrid 后:

  1. 配置建议提示词,引导用户执行常见操作
  2. 测试 AI 服务的连接情况和响应准确性
  3. 自定义高亮颜色,使其与应用主题相匹配
  4. 通过 AssistViewRequest 事件验证用户提示词
  5. 探索以编程方式执行提示词,实现自动化工作流

评论

支持 Markdown