Le Pivot Grid Avalonia qui fonctionne sur Avalonia 12

sgcPivotGrid offre à votre application Avalonia un vrai tableau croisé dynamique : un pivot grid, une liste de champs par glisser-déposer et des graphiques croisés dynamiques, sous forme de contrôles Avalonia 12 natifs sous Windows, Linux et macOS. Liez-le à votre view model en XAML, laissez les utilisateurs glisser les champs entre lignes, colonnes, filtres et valeurs, puis exportez le résultat vers Excel. Il n'y a aucun runtime WPF en dessous et aucun serveur OLAP à installer.

Un tableau croisé dynamique conçu pour Avalonia

Les pivot grids pour les applications de bureau .NET viennent d'ordinaire de suites WinForms et WPF. Sur Avalonia, le choix est restreint.

Natif, pas émulé

TsgcAvaloniaPivotGrid et TsgcAvaloniaPivotFieldList se trouvent dans le paquet esegece.sgcPivotGrid.Avalonia. Ils reposent sur la base de contrôles Avalonia de sgcUICore et sont dessinés avec SkiaSharp, donc ils fonctionnent partout où Avalonia 12 fonctionne sur le bureau. Le minimum du paquet est Avalonia 12.0, et les tests et les démos tournent sur 12.1.4.

Une alternative à une pile OLAP

Le moteur pivote les lignes que vous avez déjà en mémoire. Il garde chaque colonne dans un stockage en colonnes typé, agrège en un seul passage sur les lignes sources et ne dessine que la partie visible du résultat. Les totaux viennent des valeurs sources, jamais de moyennes de moyennes.

Tout ce que les utilisateurs attendent d'un tableau croisé dynamique

Les fonctions marquées Registered ne sont pas dans le paquet gratuit Community. Toutes les autres sont dans toutes les éditions.

Fonction Sur le pivot grid Avalonia Édition
Liste de champs par glisser-déposerTsgcAvaloniaPivotFieldList avec les zones Lignes, Colonnes, Filtres et Valeurs, DeferUpdate et ApplyChanges, une fenêtre de membres avec recherche et un menu Grouper par (Aucun, Année, Trimestre, Mois, Semaine, Jour) sur les champs de datetoutes les éditions
AgrégationsSomme, Nombre, Moyenne, Min, Max, nombre distinct, écart type et variance (pvfSum à pvfVar), avec sous-totaux et totaux générauxtoutes les éditions
Regroupement de datesDateGrouping avec pvdYear, pvdQuarter, pvdMonth, pvdWeek et pvdDay, un niveau par champtoutes les éditions
Filtres et trifiltres de membre, d'étiquette et de valeur, tri par étiquette ou par valeurtoutes les éditions
Top NTopN et TopNOthers sur un champ : conserve les premiers éléments et additionne le reste dans AutresRegistered
Afficher les valeurs en tant queShowAs : pourcentage de la ligne, de la colonne ou du total général, total cumulé, différence par rapport à et rangRegistered
Champs et éléments calculésCalculatedFields sur le moteur, et CalculatedItems sur un champ pour des formules sur des éléments voisins comme East+West ; les totaux restent fondés sur les lignes sourcesRegistered
Calcul asynchroneAsyncCalculation, RecalculateAsync qui renvoie un Task<bool> avec un CancellationToken, et CancelCalculation, pour que la fenêtre reste réactiveRegistered
Mise en forme conditionnelle et explorationFormatRules pour les échelles de couleurs, OnGetCellStyle, OnGetCellText et OnDrillDown pour les lignes derrière une celluletoutes les éditions
ExportSaveToCSV, SaveToHTML, SaveToJSON, SaveToPNG et SaveToSVGtoutes les éditions
Export ExcelSaveToXLSX écrit un vrai classeur sans bibliothèque externe : en-têtes fusionnés, plan, en-tête figé, formats numériques et feuilles de droite à gaucheRegistered
Graphiques croisés dynamiquesTsgcPivotChartTable alimente un TsgcChartTableLink de sgcCharts sur un TsgcAvaloniaChart, la liste de champs avec Layout = pvlBar place des boutons de champ au-dessus du graphique, et le concepteur de graphiques s'ouvre avec ShowDesignerAsyncsgcPivotGrid et sgcCharts Registered
Interroger le pivotTsgcPivotGridAI transforme une question en langage naturel en disposition de pivot via n'importe quel TsgcUIAIProvider, avec la TsgcAvaloniaAIQueryBar. Seul le catalogue de champs est envoyé (noms, légendes, types et quelques valeurs d'exemple), jamais les lignestoutes les éditions ; Undo est Registered
Dispositions enregistréesSaveLayoutToString, LoadLayoutFromString, SaveLayoutToFile et LoadLayoutFromFile ; les réglages du graphique dans le JSON de disposition du pivot sont compatibles octet pour octet avec DelphiRegistered
Impression et PDFPrint, ShowPrintPreview et ExportToPDF, avec les en-têtes sur chaque page ; le PDF est un document PDF/UA balisé où le pivot devient un vrai tableautoutes les éditions
Thèmesthèmes clair, sombre et à contraste élevé, et le préréglage Fluent ; sous Fluent, Avalonia 12 avec FluentTheme donne aux contrôles leurs arrière-plans, bordures, textes et remplissagestoutes les éditions
De droite à gauche et accessibilitédispositions de droite à gauche pilotées par la direction qu'Avalonia gère déjà, et UI Automation activé par défauttoutes les éditions
Languestextes de l'utilisateur final issus de packs de langue intégrés pour 12 langues, changés avec sgcUILang.SetLanguagetoutes les éditions

L'export XLSX, les éléments calculés, le calcul asynchrone, les graphiques croisés dynamiques et les 12 packs de langue figurent dans l'historique de sgcUI .NET pour la version 2026.11.0. Pour la visite complète des fonctions, voir la page produit de sgcPivotGrid.

Un pivot grid en XAML Avalonia

Les deux fichiers sont copiés d'une application d'exemple Avalonia 12.1.4 sur net8.0 avec liaisons compilées et FluentTheme. Elle a été compilée en Release avec les sources Avalonia de sgcPivotGrid, avec 0 erreur et 0 avertissement. RecalculateAsync et SaveToXLSX demandent l'édition Registered et la version 2026.11.

La vue : grid, champs et liste de champs

Un seul préfixe sgc associe tous les contrôles sgcUI. Les champs forment le contenu du grid, ItemsSource lie les lignes, et la liste de champs suit le grid via PivotGrid :

MainWindow.axaml
<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sgc="https://www.esegece.com/sgcui"
        xmlns:vm="using:PivotDemo"
        x:Class="PivotDemo.MainWindow"
        x:DataType="vm:TSalesViewModel"
        Title="Avalonia pivot grid" Width="1100" Height="640">
  <Grid ColumnDefinitions="*,260">
    <sgc:TsgcAvaloniaPivotGrid x:Name="pivot" ItemsSource="{Binding Sales}" AlternateRows="True">
      <sgc:TsgcAvaloniaPivotField FieldName="Region" Area="pvaRow" Caption="Region"/>
      <sgc:TsgcAvaloniaPivotField FieldName="Date" Area="pvaColumn" DateGrouping="pvdYear" Caption="Year"/>
      <sgc:TsgcAvaloniaPivotField FieldName="Date" Area="pvaColumn" DateGrouping="pvdQuarter" Caption="Quarter"/>
      <sgc:TsgcAvaloniaPivotField FieldName="Amount" Area="pvaData" Aggregation="pvfSum"
                                  DisplayFormat="#,##0.00" Caption="Sales"/>
    </sgc:TsgcAvaloniaPivotGrid>
    <sgc:TsgcAvaloniaPivotFieldList Grid.Column="1" Margin="8,0,0,0" PivotGrid="{Binding #pivot}"/>
  </Grid>
</Window>

Le view model et le code behind

Une ObservableCollection d'objets simples suffit. Chaque membre public devient une colonne du pivot, et une modification de la collection recharge le pivot après 100 ms :

MainWindow.axaml.cs
using System;
using System.Collections.ObjectModel;
using System.Threading;
using System.Threading.Tasks;
using Avalonia.Controls;

namespace PivotDemo
{
    public sealed class TSale
    {
        public string Region { get; set; }
        public DateTime Date { get; set; }
        public double Amount { get; set; }
    }

    public sealed class TSalesViewModel
    {
        public ObservableCollection<TSale> Sales { get; } = new ObservableCollection<TSale>();
    }

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            TSalesViewModel oModel = new TSalesViewModel();
            oModel.Sales.Add(new TSale { Region = "North", Date = new DateTime(2026, 2, 3), Amount = 1250 });
            oModel.Sales.Add(new TSale { Region = "South", Date = new DateTime(2026, 5, 18), Amount = 980 });
            DataContext = oModel;
        }

        // Registered edition: recalculate on a worker thread, then save an Excel workbook
        private async Task DoExportAsync(CancellationToken aToken)
        {
            if (await pivot.Pivot.RecalculateAsync(aToken))
                pivot.SaveToXLSX("sales.xlsx", "Sales");
        }
    }
}

Le reste de l'application est le modèle de bureau Avalonia standard : Avalonia.Desktop et Avalonia.Themes.Fluent, <FluentTheme/> dans App.axaml, et le paquet esegece.sgcPivotGrid.Avalonia, ou esegece.sgcPivotGrid.Avalonia.Community pour l'édition gratuite. Le démarrage rapide Avalonia dans l'aide construit le même pivot en code avec BeginLoad, DefineColumn, AppendRow et EndLoad.

Un moteur de pivot, tous les bureaux

Le pivot grid Avalonia partage son moteur, ses champs et son format de disposition avec les versions WinForms, WPF, VCL et FireMonkey.

Cible Contrôle Plateformes
Avalonia 12, net8.0, net9.0, net10.0TsgcAvaloniaPivotGrid, TsgcAvaloniaPivotFieldListWindows, Linux et macOS
.NET Framework 4.7.2, .NET 8, 9 et 10TsgcWinFormsPivotGrid, TsgcWpfPivotGridWinForms et WPF sous Windows
Delphi 7 à 13, VCLTsgcVCLPivotGridWin32 et Win64
Delphi XE6 à 13, FireMonkeyTsgcFMXPivotGridWindows, macOS, iOS et Android
C++ Builder 2007 à 13pivot grids VCL et FMXen-têtes .hpp générés et bibliothèques statiques

Gratuit pour commencer, code source complet à l'achat

Tarifs de la page des tarifs de sgcUI.

Community

esegece.sgcPivotGrid.Avalonia.Community sur NuGet, gratuit dans les projets commerciaux et non commerciaux pour un particulier ou une organisation dont le chiffre d'affaires annuel brut est inférieur à 1 000 000 EUR et qui compte au plus cinq développeurs. Il contient le grid, la liste de champs, les agrégations, le regroupement de dates, les filtres, les échelles de couleurs, les exports CSV, HTML, JSON, PNG et SVG, l'impression et le PDF.

sgcPivotGrid .NET

Le paquet individuel, €249 par développeur avec le code source C# complet et 1 an de mises à jour. Il ajoute Top N avec Autres, afficher les valeurs en tant que, champs et éléments calculés, dispositions enregistrées, export XLSX, calcul asynchrone et graphiques croisés dynamiques, pour WinForms, WPF et Avalonia.

sgcUI .NET Enterprise

Tous les produits sgcUI pour .NET, sgcPivotGrid inclus, à partir de €699 par développeur. Les graphiques croisés dynamiques demandent aussi sgcCharts, également inclus dans Enterprise.

Le pivot sur Avalonia : les voies comparées

Consulté le 2026-10-20, à partir des pages liées dans le tableau.

  Un pivot de suite WPF sur Avalonia XPF Avalonia Pro sgcPivotGrid
Pivot gridle contrôle WPF, exécuté par XPF, "a binary-compatible WPF runtime"absent de la page Avalonia Procontrôles Avalonia 12 natifs avec liste de champs
LicenceXPF par application : Internal 9 500 EUR, Business 29 500 EUR, Enterprise à partir de 124 500 EUR899 EUR par poste et par an, hors TVApar développeur, à partir de €249, sans frais par application, redistribution libre des binaires
Conditionsles notes XPF sur les bibliothèques tierces indiquent que les shims d'API Win32 sont "required for DevExpress controls" et que "Issues most commonly arise with controls that use GDI or WinForms components" le paquet Avalonia référence Avalonia, Avalonia.Skia et SkiaSharp, pas WPF ni WinForms
Code source code source complet des contrôles premium dans Enterprisecode source C# complet dans chaque édition Registered

XPF vise à exécuter une application WPF existante sur macOS et Linux avec son code et ses contrôles à peu près tels quels, et sgcPivotGrid ne fait pas cela : vous l'ajoutez à une vue Avalonia. Si vous migrez une application WPF ou WinForms, lisez De WinForms et WPF vers Avalonia. Si vous utilisez Avalonia Pro, lisez les contrôles que Avalonia Pro ne livre pas ; sgcPivotGrid fonctionne à côté des contrôles Avalonia Pro.

Essayez-le avant d'écrire une ligne

Les démos .NET de sgcPivotGrid comprennent deux applications Avalonia qui fonctionnent sous Windows, Linux et macOS avec le SDK .NET 8.0 ou plus récent.

SalesPivotAvalonia

100 000 lignes de ventes générées avec une liste de champs, des colonnes Année, Trimestre et Mois, un tri par valeur, une échelle de couleurs, l'export CSV, HTML et PNG et la barre de requête IA. dotnet run la lance, et dotnet run -- --test result.txt exécute ses autocontrôles hors écran.

PivotChartAvalonia

Un graphique croisé dynamique comme dans Excel : un TsgcAvaloniaPivotGrid, un TsgcPivotChartTable et un TsgcChartTableLink sur un TsgcAvaloniaChart, des boutons de champ au-dessus du graphique, le concepteur de graphiques et les réglages du graphique enregistrés dans la disposition du pivot. Le graphique croisé dynamique est réservé à Registered.

Vous préférez un exécutable prêt à l'emploi ? Les démos compilées de tous les produits sgcUI ne demandent rien d'installé.

Questions fréquentes

Oui. TsgcAvaloniaPivotGrid et TsgcAvaloniaPivotFieldList sont des contrôles Avalonia du paquet esegece.sgcPivotGrid.Avalonia, construits sur la base de contrôles Avalonia de sgcUICore et dessinés avec SkiaSharp. Le paquet cible Avalonia 12 (minimum du paquet 12.0, testé sur 12.1.4). Il n'y a ni couche WPF ni runtime XPF.

Windows, Linux et macOS via Avalonia 12, avec les frameworks cibles net8.0, net9.0 et net10.0. Le même produit propose aussi des pivot grids WinForms et WPF pour .NET Framework 4.7.2 et .NET 8, 9 et 10, ainsi que des pivot grids VCL et FireMonkey pour Delphi et C++ Builder.

Liez ItemsSource à n'importe quel IEnumerable du view model, par exemple une ObservableCollection, une List ou une DataView, et déclarez les champs en XAML sous forme d'éléments TsgcAvaloniaPivotField avec FieldName, Area et Aggregation. Chaque membre des éléments devient une colonne du pivot. Les modifications ultérieures de la collection rechargent le pivot une fois par fenêtre de 100 ms. Une System.Data.DataTable peut aussi être lue via TsgcPivotSource_DataSet.

Le paquet Community esegece.sgcPivotGrid.Avalonia.Community contient le grid, la liste de champs par glisser-déposer, huit agrégations, le regroupement de dates, les filtres de membre, d'étiquette et de valeur, le tri, les échelles de couleurs, l'export CSV, HTML, JSON, PNG et SVG, l'impression avec aperçu, l'export PDF, l'accessibilité et les dispositions par IA. Top N avec Autres, afficher les valeurs en tant que, champs et éléments calculés, dispositions enregistrées, export XLSX, calcul asynchrone, graphiques croisés dynamiques et Undo d'une disposition par IA demandent une édition Registered.

Oui. La disposition est enregistrée en JSON avec SaveLayoutToString ou SaveLayoutToFile, et les réglages du graphique stockés dans le JSON de disposition du pivot sont compatibles octet pour octet avec Delphi. Les dispositions enregistrées sont dans l'édition Registered.

Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Ajoutez un tableau croisé dynamique à votre application Avalonia

Commencez avec le paquet gratuit Community de NuGet, ou prenez l'édition Registered pour toutes les fonctions et le code source C# complet, et lancez la démo SalesPivotAvalonia à côté de votre application.