Repository navigation
Give Avalonia controls real accessible names (#5498, #5499) - #5501
Merged
Gabriel Dufresne (GabrielDuf) merged 3 commits intoOct 9, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The accessible names are correctly propagated and updated across the affected controls.
0 open findings
What changed in this PR
Improves Avalonia accessibility by replacing internal control-type announcements with meaningful localized names.
Changes:
- Forwards accessible names through Expander and DataGrid templates.
- Names package cells, warnings, screenshot controls, and action menus.
- Adds required English localization keys.
| File | Description |
|---|---|
AbstractPackagesPage.axaml |
Names filters, source controls, and package cells. |
PackageDetailsWindow.axaml.cs |
Updates screenshot pip names dynamically. |
PackageDetailsWindow.axaml |
Names detail actions and screenshot controls. |
PackageCollections.cs |
Exposes warning-aware cell names. |
Styles.Common.axaml |
Forwards names to focusable template controls. |
lang_en.json |
Adds screenshot accessibility strings. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
🤖 Pull request was approved automatically: the AI review is complete and all its review threads are resolved. 🎉
Integration Details
{
"deliveryId": "c5225b40-c410-11f1-8864-72fc27b5812a",
"headSha": "9edf4efef6aedf52f738e0312357c56d039fd40c",
"reviewer": "copilot-pull-request-reviewer[bot]"
}
Gabriel Dufresne (GabrielDuf)
deleted the
fix/avalonia-accessible-names
branch
October 9, 2026 19:17
2 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Screen readers announced several focusable controls by their Avalonia type name (
Avalonia.Controls.Grid,StackPanel,Shapes.Ellipse), and the Package Details action dropdown repeated the main button's name.Why class names were announced
When a
ContentControlhas noAutomationProperties.Name, Avalonia 12's peer falls back to a directTextBlockchild, then toContent.ToString(), which is the type name for any panel or shape content. Two places hit this because the focusable element is a template part while the name lives elsewhere:ToggleButton#ExpanderHeader, and Avalonia never forwards the Expander's name to it. Expanders that were already named (policy editor, agent policy inspector) still announced their header panel's type.Gridannounced class names.Changes
Styles.Common.axaml: two app-wide styles. One TemplateBinds the Expander header toggle's name to the Expander's. The other forwards aDataGridCell's content name to the cell. A null forwarded name keeps Avalonia'sTextBlockfallback, so unnamed expanders and plain-text cells behave as before.lang_en.json: 4 new keys (Previous screenshot,Next screenshot,Screenshot {0} of {1},Screenshot {0} of {1}, current).Verification
dotnet format whitespaceandstyleare clean.Avalonia.*name. Cells read values such asGit.Git,2.55.0.3and60.3 MB.uniget package show --id Git.Git --source winget): Installation options, Previous/Next screenshot, and pipsScreenshot 1 of 3, current. Pressing Next movescurrentto pip 2.Installnext to theInstallmain button on the unfixed build, and readsMore optionswith the fix.Not covered
Closes #5498
Closes #5499