{"id":34879153,"url":"https://github.com/wieslawsoltes/prodatagrid","last_synced_at":"2026-04-03T21:24:02.498Z","repository":{"id":304847287,"uuid":"1020216134","full_name":"wieslawsoltes/ProDataGrid","owner":"wieslawsoltes","description":"ProDataGrid is a high-performance DataGrid control for Avalonia.","archived":false,"fork":false,"pushed_at":"2026-01-26T19:39:09.000Z","size":11497,"stargazers_count":143,"open_issues_count":1,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-01-27T01:46:02.900Z","etag":null,"topics":["avalonia","avaloniaui","control","datagrid","hierachical","virtualization"],"latest_commit_sha":null,"homepage":"https://wieslawsoltes.github.io/ProDataGrid/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"AvaloniaUI/Avalonia.Controls.DataGrid","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wieslawsoltes.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["wieslawsoltes"]}},"created_at":"2025-07-15T14:16:11.000Z","updated_at":"2026-01-26T19:38:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wieslawsoltes/ProDataGrid","commit_stats":null,"previous_names":["wieslawsoltes/avalonia.controls.datagrid","wieslawsoltes/prodatagrid"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/wieslawsoltes/ProDataGrid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FProDataGrid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FProDataGrid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FProDataGrid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FProDataGrid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wieslawsoltes","download_url":"https://codeload.github.com/wieslawsoltes/ProDataGrid/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FProDataGrid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29040716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T09:57:37.951Z","status":"ssl_error","status_checked_at":"2026-02-03T09:55:14.920Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avalonia","avaloniaui","control","datagrid","hierachical","virtualization"],"created_at":"2025-12-26T01:40:13.445Z","updated_at":"2026-02-03T10:00:46.853Z","avatar_url":"https://github.com/wieslawsoltes.png","language":"C#","funding_links":["https://github.com/sponsors/wieslawsoltes"],"categories":[],"sub_categories":[],"readme":"# ProDataGrid\n\n[![Build](https://github.com/wieslawsoltes/Avalonia.Controls.DataGrid/actions/workflows/build.yml/badge.svg)](https://github.com/wieslawsoltes/Avalonia.Controls.DataGrid/actions/workflows/build.yml)\n\n[![Release](https://github.com/wieslawsoltes/Avalonia.Controls.DataGrid/actions/workflows/release.yml/badge.svg)](https://github.com/wieslawsoltes/Avalonia.Controls.DataGrid/actions/workflows/release.yml)\n[![GitHub Release](https://img.shields.io/github/v/release/wieslawsoltes/Avalonia.Controls.DataGrid.svg)](https://github.com/wieslawsoltes/Avalonia.Controls.DataGrid/releases)\n\n| Badge | Package | Downloads |\n| --- | --- | --- |\n| [![NuGet](https://img.shields.io/nuget/v/ProDataGrid.svg)](https://www.nuget.org/packages/ProDataGrid/) | [ProDataGrid](https://www.nuget.org/packages/ProDataGrid/) | [![Downloads](https://img.shields.io/nuget/dt/ProDataGrid.svg)](https://www.nuget.org/packages/ProDataGrid/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProDataGrid.Charting.svg)](https://www.nuget.org/packages/ProDataGrid.Charting/) | [ProDataGrid.Charting](https://www.nuget.org/packages/ProDataGrid.Charting/) | [![Downloads](https://img.shields.io/nuget/dt/ProDataGrid.Charting.svg)](https://www.nuget.org/packages/ProDataGrid.Charting/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProDataGrid.FormulaEngine.svg)](https://www.nuget.org/packages/ProDataGrid.FormulaEngine/) | [ProDataGrid.FormulaEngine](https://www.nuget.org/packages/ProDataGrid.FormulaEngine/) | [![Downloads](https://img.shields.io/nuget/dt/ProDataGrid.FormulaEngine.svg)](https://www.nuget.org/packages/ProDataGrid.FormulaEngine/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProDataGrid.FormulaEngine.Excel.svg)](https://www.nuget.org/packages/ProDataGrid.FormulaEngine.Excel/) | [ProDataGrid.FormulaEngine.Excel](https://www.nuget.org/packages/ProDataGrid.FormulaEngine.Excel/) | [![Downloads](https://img.shields.io/nuget/dt/ProDataGrid.FormulaEngine.Excel.svg)](https://www.nuget.org/packages/ProDataGrid.FormulaEngine.Excel/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProCharts.svg)](https://www.nuget.org/packages/ProCharts/) | [ProCharts](https://www.nuget.org/packages/ProCharts/) | [![Downloads](https://img.shields.io/nuget/dt/ProCharts.svg)](https://www.nuget.org/packages/ProCharts/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProCharts.Avalonia.svg)](https://www.nuget.org/packages/ProCharts.Avalonia/) | [ProCharts.Avalonia](https://www.nuget.org/packages/ProCharts.Avalonia/) | [![Downloads](https://img.shields.io/nuget/dt/ProCharts.Avalonia.svg)](https://www.nuget.org/packages/ProCharts.Avalonia/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProCharts.Skia.svg)](https://www.nuget.org/packages/ProCharts.Skia/) | [ProCharts.Skia](https://www.nuget.org/packages/ProCharts.Skia/) | [![Downloads](https://img.shields.io/nuget/dt/ProCharts.Skia.svg)](https://www.nuget.org/packages/ProCharts.Skia/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProDiagnostics.svg)](https://www.nuget.org/packages/ProDiagnostics/) | [ProDiagnostics](https://www.nuget.org/packages/ProDiagnostics/) | [![Downloads](https://img.shields.io/nuget/dt/ProDiagnostics.svg)](https://www.nuget.org/packages/ProDiagnostics/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProDiagnostics.Transport.svg)](https://www.nuget.org/packages/ProDiagnostics.Transport/) | [ProDiagnostics.Transport](https://www.nuget.org/packages/ProDiagnostics.Transport/) | [![Downloads](https://img.shields.io/nuget/dt/ProDiagnostics.Transport.svg)](https://www.nuget.org/packages/ProDiagnostics.Transport/) |\n| [![NuGet](https://img.shields.io/nuget/v/ProDiagnostics.Viewer.svg)](https://www.nuget.org/packages/ProDiagnostics.Viewer/) | [ProDiagnostics.Viewer](https://www.nuget.org/packages/ProDiagnostics.Viewer/) | [![Downloads](https://img.shields.io/nuget/dt/ProDiagnostics.Viewer.svg)](https://www.nuget.org/packages/ProDiagnostics.Viewer/) |\n\nProDataGrid is a high-performance DataGrid control for Avalonia.\n\n## Quick Start\n\nInstall the package:\n\n```sh\ndotnet add package ProDataGrid\n```\n\nInclude the theme in `App.axaml`:\n\n```xml\n\u003cApplication.Styles\u003e\n  \u003cFluentTheme /\u003e\n  \u003cStyleInclude Source=\"avares://Avalonia.Controls.DataGrid/Themes/Fluent.v2.xaml\" /\u003e\n\u003c/Application.Styles\u003e\n```\n\n```xml\n\u003cApplication.Styles\u003e\n  \u003cSimpleTheme /\u003e\n  \u003cStyleInclude Source=\"avares://Avalonia.Controls.DataGrid/Themes/Simple.v2.xaml\" /\u003e\n\u003c/Application.Styles\u003e\n```\n\nBasic XAML usage:\n\n```xml\n\u003cDataGrid ItemsSource=\"{Binding People}\"\n          AutoGenerateColumns=\"False\"\n          UseLogicalScrollable=\"True\"\u003e\n  \u003cDataGrid.Columns\u003e\n    \u003cDataGridTextColumn Header=\"ID\" Binding=\"{Binding Id}\" Width=\"60\" /\u003e\n    \u003cDataGridTextColumn Header=\"Name\" Binding=\"{Binding Name}\" Width=\"*\" /\u003e\n    \u003cDataGridCheckBoxColumn Header=\"Active\" Binding=\"{Binding IsActive}\" Width=\"80\" /\u003e\n  \u003c/DataGrid.Columns\u003e\n\u003c/DataGrid\u003e\n```\n\n### More than DataGrid\n\nProDataGrid ships as a family of packages beyond the grid itself. Quick starts below cover the most common add-ons.\n\n#### Charting\n\nProCharts is an Excel-quality charting library built for ProDataGrid. `ProDataGrid.Charting` bridges grid data and pivots into chart series.\n\nQuick start:\n\n```sh\ndotnet add package ProCharts.Avalonia\ndotnet add package ProDataGrid.Charting\n```\n\n```csharp\nusing ProCharts;\n\nvar chartModel = new ChartModel\n{\n    Title = \"Revenue by Quarter\",\n    Series = new List\u003cChartSeries\u003e\n    {\n        ChartSeries.Line(\"Q1\", new[] { 120d, 140d, 110d, 180d }),\n        ChartSeries.Line(\"Q2\", new[] { 160d, 130d, 150d, 210d })\n    },\n    XAxis = new ChartAxis { Title = \"Quarter\", Kind = ChartAxisKind.Category },\n    YAxis = new ChartAxis { Title = \"Revenue\", Kind = ChartAxisKind.Value }\n};\n```\n\nBind `chartModel` to `ProChartView.ChartModel` in your Avalonia view.\n\n#### Formula Engine\n\nThe formula engine provides Excel-compatible parsing, evaluation, and recalculation. Use it in DataGrid formula columns or wire it to your own data model.\n\nQuick start:\n\n```sh\ndotnet add package ProDataGrid.FormulaEngine\ndotnet add package ProDataGrid.FormulaEngine.Excel\n```\n\n```csharp\nvar definition = new DataGridFormulaColumnDefinition\n{\n    Header = \"Total\",\n    Formula = \"=[Price] * [Quantity]\",\n    AllowCellFormulas = true\n};\n```\n\n#### ProDiagnostics\n\nProDiagnostics provides Avalonia developer tools UI for runtime inspection and debugging, with optional out-of-process transport and a viewer app.\n\nQuick start:\n\n```sh\ndotnet add package ProDiagnostics\n```\n\n```csharp\npublic override void OnFrameworkInitializationCompleted()\n{\n    if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)\n        desktop.MainWindow = new MainWindow();\n\n    base.OnFrameworkInitializationCompleted();\n    this.AttachDevTools();\n}\n```\n\nOptional streaming + viewer:\n\n```sh\ndotnet add package ProDiagnostics.Transport\ndotnet tool install -g prodiagnostics-viewer\n```\n\n## Nightly Packages (GitHub Packages)\n\nNightly builds are published to GitHub Packages with versions like `11.3.9-nightly.20241227.123`.\n\nAdd the GitHub Packages feed (requires a GitHub token with `read:packages`):\n\n```sh\ndotnet nuget add source https://nuget.pkg.github.com/wieslawsoltes/index.json \\\n  --name github \\\n  --username YOUR_GITHUB_USERNAME \\\n  --password YOUR_GITHUB_TOKEN \\\n  --store-password-in-clear-text\n```\n\nGitHub Packages NuGet docs: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry\n\nInstall a nightly package:\n\n```sh\ndotnet add package ProDataGrid --source github --prerelease\n```\n\nOr pin a specific nightly version:\n\n```sh\ndotnet add package ProDataGrid --source github --version 11.3.9-nightly.20241227.123\n```\n\n## Documentation\n\n- DocFX articles: `docfx/articles/intro.md`\n- DocFX entry page: `docfx/index.md`\n\n## Testing\n\nRun standard tests:\n\n```sh\ndotnet test\n```\n\nLeak tests use Avalonia-style WeakReference/GC checks. Use the helper script to run only leak tests:\n\n```powershell\n.\\tools\\run-leak-tests.ps1\n```\n\n## ProDiagnostics\n\n`ProDiagnostics` provides Avalonia developer tools UI as a standalone package. It focuses on runtime inspection and debugging:\n\n- Visual and logical tree inspection.\n- Property and style inspection with live values.\n- Routed event tracking.\n- Layout exploration and renderer diagnostics overlays.\n\n### Installation\n\nInstall from NuGet:\n\n```sh\ndotnet add package ProDiagnostics\n```\n\n### Quick start\n\nAttach DevTools after application initialization:\n\n```csharp\npublic override void OnFrameworkInitializationCompleted()\n{\n    if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)\n        desktop.MainWindow = new MainWindow();\n\n    base.OnFrameworkInitializationCompleted();\n    this.AttachDevTools();\n}\n```\n\nBy default DevTools opens with `F12`. You can also attach to a `TopLevel` or provide a custom key gesture or options.\n\n## ProDiagnostics.Transport\n\n`ProDiagnostics.Transport` streams metrics and activities over UDP so you can observe diagnostics out-of-process.\n\n### Installation\n\nInstall from NuGet:\n\n```sh\ndotnet add package ProDiagnostics.Transport\n```\n\n### Quick start\n\nExport diagnostics to the viewer:\n\n```csharp\nusing ProDiagnostics.Transport;\n\nvar exporter = new DiagnosticsUdpExporter(new DiagnosticsUdpOptions\n{\n    Host = \"127.0.0.1\",\n    Port = TelemetryProtocol.DefaultPort,\n    ActivitySourceNames = new[] { \"ProDataGrid.*\" },\n    MeterNames = new[] { \"ProDataGrid.Diagnostic.Meter\" }\n});\n\nexporter.Start();\n```\n\nKeep the exporter alive for the lifetime of the app and dispose it during shutdown.\n\n## ProDiagnostics.Viewer\n\n`ProDiagnostics.Viewer` is an Avalonia UI for live metrics and activities streamed over UDP.\n\n### Installation\n\nInstall as a global tool:\n\n```sh\ndotnet tool install -g prodiagnostics-viewer\n```\n\n### Quick start\n\nRun the viewer:\n\n```sh\nprodiagnostics-viewer\n```\n\n## License\n\nProDataGrid is licensed under the MIT License (see `licence.md`).\n\nProDiagnostics is licensed under the MIT License (see `licence.md`).\n\nThe original `Avalonia.Controls.DataGrid` and `Avalonia.Diagnostics` license is preserved in `licence-avalonia.md`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwieslawsoltes%2Fprodatagrid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwieslawsoltes%2Fprodatagrid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwieslawsoltes%2Fprodatagrid/lists"}