Adopt WinUI.TableView for the repo table (wait for its accessibility release) #33

Closed
opened 2026-07-05 12:27:22 +00:00 by KofTwentyTwo · 2 comments
KofTwentyTwo commented 2026-07-05 12:27:22 +00:00 (Migrated from github.com)

Decision

Replace the hand-rolled header-Grid + ListView repo table with WinUI.TableView (MIT, actively maintained, NuGet WinUI.TableView) — once its accessibility release ships.

Why this control

Researched 2026-07-05 against CommunityToolkit DataGrid (archived, never ported past Toolkit 7.x; MS docs point at TableView), Labs DataTable (experimental, no sorting), first-party (nothing shipped in WinAppSDK 1.7–2.2), and commercial grids (license-incompatible with an MIT project). WinUI.TableView delivers out of the box what we now maintain by hand: styled header row, click-to-sort with indicators, Excel-style per-column filter flyouts (IColumnFilterHandler for custom logic), template columns (progress-bar cell, checkbox column with select-all corner), column resize/reorder, CSV export, ListView-derived virtualization.

Why not yet

Stable 1.4.1 has no dedicated UIA automation peers — adopting it today would regress the app's accessibility investment (screen-reader work shipped in beta.5) and our FlaUI e2e coverage. The upstream accessibility PR (#397) merged to main on 2026-07-05 and is expected in the next stable release. Adopt when that lands.

Watch items

  • Upstream release containing PR #397 (automation peers) — the adoption trigger
  • Issue #284 / PR #285 (metapackage hygiene: currently floors on the WASDK 1.6 monolith; works with our 2.2 via NuGet unification)
  • Minor versions have shipped breaking renames — pin the version, read release notes

Migration notes (from the 2026-07-05 table analysis)

Preserve: selection as model state (IsSelected checkbox column, not ListView selection), FilteredRepos as the source (sort+filter composed in the VM), column set 40|2*|160|120|80, the ElementName bridge to ResolvePathsCommand, and the multi-row cells (status+progress, error line, resolve link) — the last needs redesign since TableView is strictly columnar (details flyout or an actions column).

Meanwhile the hand-rolled table gained a proper header style and per-column filter flyouts (commit 53a230f), so the gap this control closes is now maintenance burden rather than missing features.

🤖 Generated with Claude Code

## Decision Replace the hand-rolled header-Grid + ListView repo table with **[WinUI.TableView](https://github.com/w-ahmad/WinUI.TableView)** (MIT, actively maintained, NuGet `WinUI.TableView`) — **once its accessibility release ships**. ## Why this control Researched 2026-07-05 against CommunityToolkit DataGrid (archived, never ported past Toolkit 7.x; MS docs point at TableView), Labs DataTable (experimental, no sorting), first-party (nothing shipped in WinAppSDK 1.7–2.2), and commercial grids (license-incompatible with an MIT project). WinUI.TableView delivers out of the box what we now maintain by hand: styled header row, click-to-sort with indicators, Excel-style per-column filter flyouts (`IColumnFilterHandler` for custom logic), template columns (progress-bar cell, checkbox column with select-all corner), column resize/reorder, CSV export, ListView-derived virtualization. ## Why not yet Stable 1.4.1 has **no dedicated UIA automation peers** — adopting it today would regress the app's accessibility investment (screen-reader work shipped in beta.5) and our FlaUI e2e coverage. The upstream accessibility PR (#397) merged to main on 2026-07-05 and is expected in the next stable release. Adopt when that lands. ## Watch items - Upstream release containing PR #397 (automation peers) — the adoption trigger - Issue #284 / PR #285 (metapackage hygiene: currently floors on the WASDK 1.6 monolith; works with our 2.2 via NuGet unification) - Minor versions have shipped breaking renames — pin the version, read release notes ## Migration notes (from the 2026-07-05 table analysis) Preserve: selection as model state (`IsSelected` checkbox column, not ListView selection), `FilteredRepos` as the source (sort+filter composed in the VM), column set `40|2*|160|120|80`, the `ElementName` bridge to `ResolvePathsCommand`, and the multi-row cells (status+progress, error line, resolve link) — the last needs redesign since TableView is strictly columnar (details flyout or an actions column). Meanwhile the hand-rolled table gained a proper header style and per-column filter flyouts (commit 53a230f), so the gap this control closes is now maintenance burden rather than missing features. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
w-ahmad commented 2026-10-03 21:20:10 +00:00 (Migrated from github.com)

Hi! Just a heads-up that WinUI.TableView v1.5.0 is now available and includes the UI Automation/accessibility support.

So, the accessibility blocker mentioned here should now be resolved. 🙂

Release: https://w-ahmad.dev/WinUI.TableView/release-notes/v1.5.0.html
Docs: https://w-ahmad.dev/WinUI.TableView/docs/accessibility.html

Hi! Just a heads-up that WinUI.TableView v1.5.0 is now available and includes the UI Automation/accessibility support. So, the accessibility blocker mentioned here should now be resolved. 🙂 Release: https://w-ahmad.dev/WinUI.TableView/release-notes/v1.5.0.html Docs: https://w-ahmad.dev/WinUI.TableView/docs/accessibility.html
KofTwentyTwo commented 2026-10-09 12:34:47 +00:00 (Migrated from github.com)

Trigger check on 2026-10-09: upstream PR #397 (UI Automation / accessibility support) merged on 2026-07-05 and shipped in WinUI.TableView 1.5.0 (stable, 2026-09-17; NuGet versions now end at 1.5.0). The adoption condition in this issue is met.

This is a self-contained UI migration (header + ListView + per-column filter flyouts → TableView columns, sort, and filter handlers, keeping the FlaUI AutomationIds and the screen-reader work), so it is proposed as its own PR after the current known-issues sweep merges, with the FlaUI suite and a manual Narrator pass as the acceptance bar. Pin the exact version and read the 1.4 → 1.5 release notes first: minor versions have shipped breaking renames.

Trigger check on 2026-10-09: upstream PR #397 (UI Automation / accessibility support) merged on 2026-07-05 and shipped in **WinUI.TableView 1.5.0** (stable, 2026-09-17; NuGet versions now end at 1.5.0). The adoption condition in this issue is met. This is a self-contained UI migration (header + ListView + per-column filter flyouts → TableView columns, sort, and filter handlers, keeping the FlaUI AutomationIds and the screen-reader work), so it is proposed as its own PR after the current known-issues sweep merges, with the FlaUI suite and a manual Narrator pass as the acceptance bar. Pin the exact version and read the 1.4 → 1.5 release notes first: minor versions have shipped breaking renames.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/gclo#33