microsoft / microsoft-ui-xaml

Windows UI Library: the latest Windows 10 native controls and Fluent styles for your applications
MIT License
6.36k stars 678 forks source link

Navigation Items have no accessible containers #4609

Closed MarcoZehe closed 3 years ago

MarcoZehe commented 3 years ago

Describe the bug

NavigationView items that are left aligned vertically expose an Automation role of List Item, but have no corresponding ListBox container. NavigationView items that are aligned horizontally at the top are exposed as TabControl items, but have no associated TabList container.

Steps to reproduce the bug

Steps to reproduce the behavior:

  1. Go to the XAML Controls Gallery and into the NavigationView example page.
  2. Turn on Narrator and navigate through the examples via tab.

Expected behavior

Narrator should say that the left aligned vertical items are in a listbox, hinting to the user that they should use arrow keys up and down to navigate. When at the horizontally top aligned items, there should probably be a tablist announcement as well, but since this role is usually spoken, users know they should probably navigate horizontally using right and left arrows.

Screenshots

Version Info

NuGet package version:

XAML Control Gallery from Microsoft Store, Version: 1.2.17.0.

Windows app type: UWP Win32
Windows 10 version Saw the problem?
Insider Build (xxxxx)
October 2020 Update (19042) Yes
May 2020 Update (19041)
November 2019 Update (18363)
May 2019 Update (18362)
October 2018 Update (17763)
April 2018 Update (17134)
Fall Creators Update (16299)
Creators Update (15063)
Device form factor Saw the problem?
Desktop Yes
Xbox
Surface Hub
IoT

Additional context

https://github.com/microsoft/Xaml-Controls-Gallery/issues/658

DHowett commented 3 years ago

Linking: https://github.com/microsoft/terminal/issues/9568

Another Terminal report :smile:

StephenLPeters commented 3 years ago

@MarcoZehe ListView doesn't do this, is that control also wrong?

MarcoZehe commented 3 years ago

@StephenLPeters No, ListView, GridView and FlipView have containers. At least those in the XAML Gallery example app I cited above do. They all announce themselves as lists, and if I look at the container's UIA properties with NVDA's object navigator, I see a class name of ListView and a role of "list". Didn't inspect GridView and FlipView as closely, but also found containers for each collection as it should be.

ranjeshj commented 3 years ago

@YuliKl as FYI

YuliKl commented 3 years ago

Consulted with internal Microsoft accessibility experts, they don't see the lack of containers as a problem. Closing this issue.

A few more details: In one case the user is told they are on a menu item. Knowing this the user knows they can arrow up/down or left/right. Even in a normal menu you don’t necessarily know which direction. In the other case the items are called tab items so the user again knows they can likely arrow left/right or maybe up/down. Simply adding that you are in a list doesn’t tell the user any more information. Meaning they still don’t know if they should arrow up/down or left/right.