syncfusion-wpf-smart-datagrid — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-wpf-smart-datagrid (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill guides you in implementing the Syncfusion WPF Smart DataGrid (SfSmartDataGrid), an AI-powered data grid control that enables natural language-driven operations for sorting, filtering, grouping, and highlighting. The Smart DataGrid interprets user prompts and applies context-aware actions, making complex data operations intuitive and efficient.
Use this skill when the user needs to:
This skill is essential for modern WPF data applications that leverage AI to simplify user interactions with complex datasets.
The SfSmartDataGrid enhances traditional data grid functionality with:
📄 Read: references/getting-started.md
📄 Read: references/data-model-binding.md
📄 Read: references/ai-service-setup.md
📄 Read: references/ai-sorting-grouping.md
📄 Read: references/ai-filtering-highlighting.md
📄 Read: references/customization-events.md
Here's a minimal example to set up an AI-powered 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 Service Registration):
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();
}
}User Need: Sort data by multiple columns without manual configuration.
Prompt Examples:
"sort by city in descending""sort by city column in descending and Revenue ascending""clear sorting"When to Use: User wants quick, intuitive sorting via text commands.
User Need: Apply complex filters using plain language.
Prompt Examples:
"filter Country equals Germany""filter Country equals Germany AND Revenue greaterThan 1000""filter OrderID between 20251001 and 20251020""clear filters"When to Use: User needs conditional data filtering without building predicates manually.
User Need: Organize data hierarchically.
Prompt Examples:
"group by Country""group by Country and ShipCity""clear grouping"When to Use: User wants to analyze data in organized, nested groups.
User Need: Visually emphasize important data.
Prompt Examples:
"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"When to Use: User wants visual indicators for critical data points.
User Need: Execute AI actions without opening AssistView.
Implementation:
// Execute prompt directly from code
SmartGrid.ExecutePrompt("Sort the OrderID by Descending");
SmartGrid.ExecutePrompt("filter PaymentStatus equals Not Paid");When to Use: Programmatic workflows where AI actions are triggered by application logic.
User Need: Control or validate AI requests before execution.
Implementation:
SmartGrid.AssistViewRequest += (sender, e) =>
{
// Access the prompt
string userPrompt = e.Prompt;
// Optionally cancel the request
if (userPrompt.Contains("forbidden"))
{
e.Cancel = true;
}
};When to Use: Need to validate, log, or prevent certain AI operations.
| Property | Type | Purpose |
|---|---|---|
ItemsSource | IEnumerable | Data source for the grid |
CurrentUser | Author | Identifies user for AssistView message alignment (required) |
Suggestions | ObservableCollection\<string\> | Predefined prompts shown in AssistView |
Prompt | string | Initial prompt auto-executed on AssistView open |
EnableSmartActions | bool | Enable/disable AI-powered actions (default: false) |
HighlightBrush | SolidColorBrush | Default brush for highlighting without color specified |
AutoGenerateColumns | bool | Auto-generate columns from data model properties |
ColumnSizer | GridLengthUnitType | Column sizing mode (Star, Auto, None) |
| Method | Purpose |
|---|---|
ExecutePrompt(string prompt) | Execute AI action programmatically without AssistView |
| Event | Purpose |
|---|---|
AssistViewRequest | Triggered when user sends a request; provides Cancel option |
After implementing the Smart DataGrid:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.