DevExpress components are built on top of WinForms, WPF, ASP.NET Core, and Blazor frameworks. Internally, they rely on a layered architecture:
The GridControl, for instance, implements virtual scrolling and cell recycling to support datasets exceeding millions of rows. The SchedulerControl builds on the same virtualization but adds complex layout calculations for time‑slot rendering.
| Benchmark | Baseline (DX 23.2) | With Dimaster Patch | Δ% | |-----------|-------------------|----------------------|----| | GridMemory (Peak) | 1 452 MiB | 1 274 MiB | ‑12 % | | SchedulerLatency (Avg) | 84 ms | 78 ms | ‑7 % | | TreeListA11y (Violations) | 27 | 0 | ‑100 % | | Unit Test Pass Rate | 100 % | 100 % | — | | Security Findings | 0 critical | 0 critical | — | devexpress patch by dimaster patched
Interpretation
DevExpress’ TreeList lacked proper AutomationProperties.Name assignments for node elements. The patch adds a TreeListAccessibilityAdapter that implements IAccessible and propagates node text to assistive technologies: DevExpress components are built on top of WinForms, WPF, ASP
public class TreeListAccessibilityAdapter : IAccessible
private readonly TreeList _owner;
// Implementation of GetChild, GetAccName, etc.
The adapter registers itself via AutomationPeerFactory.Register< TreeList, TreeListAutomationPeer >, ensuring that screen readers (NVDA, JAWS) correctly announce node labels and hierarchy.
| Benchmark | Description | Metric |
|-----------|-------------|--------|
| GridMemory | Load a 500 k‑row DataTable into GridControl. | Peak memory (MiB) |
| SchedulerLatency | Simulate 1 000 drag‑and‑drop operations across the week view. | Average UI response time (ms) |
| TreeListA11y | Run an automated axe‑core accessibility scan on a TreeList with 10 k nodes. | Number of violations | DevExpress’ TreeList lacked proper AutomationProperties
Each benchmark was executed on a Windows 11 VM (Intel i7‑12700K, 32 GB RAM) with three repetitions per scenario; results are reported as the arithmetic mean.