Steps for customizing the accessible name of a standard control
A dev recently asked me how she could change the accessible name of a radio button in her UI, such that the accessible name was something other than the text shown Canada Goose Coats On Sale visually for the radio button. This was an unusual thing to want to do, because you’d typically want the radio button’s accessible name to match the visuals. And many UI frameworks will provide that accessible functionality for you canada goose black friday sale by default.But in this particular case, it just so happened that the app UI contained two groups of radio buttons. A radio button from one of the groups displayed exactly the Canada Goose sale same text as one of the radio buttons from the other group. This meant that the accessible names of the two radio canada goose clearance buttons were the same. The simplest way to canada goose clearance sale avoid that would be to change the visual buy canada goose jacket cheap text shown on one of the radio buttons. If the visual text shown on the canada goose uk black friday radio buttons is different, then by default the accessible names will be different too. But that approach was not an option for this app, for not technical reasons.Technically it might be possible for your customer who uses a screen reader to learn about the radio buttons’ associated grouping when they reach the radio buttons. After all, some group uk canada goose header text might be shown somewhere in the UI. But in this case, the dev wanted to override the radio buttons’ accessible names, in order to differentiate them.The UI framework being used in this case was Win32, and so I supplied a snippet to the dev which would set custom accessible names on the radio buttons. But this got me thinking about how I would achieve the same results with other UI frameworks. If someone wanted to do Canada Goose Outlet this in any of a XAML Store app, an HTML Store app, or in Win32/WinForms/WPF apps, what would the steps be?So this post describes some related steps in all these frameworks. It canada goose uk shop does not include details Canada Goose Jackets for UI frameworks which don’t build up some level of programmatic canada goose uk outlet accessibility by default. For example, DirectX. It also doesn’t canada goose factory sale detail MFC, but given that you can access the hwnds used in an MFC app, the steps described below for Win32 should work fine in an MFC app.In order to test out my code snippets, I made up a scenario where buy canada goose jacket the UI showed two radio button groups. The first group is for selecting a country from a list of countries which have interesting health care systems. The second group cheap canada goose uk is for making a selection from a list of types of geese. So I end up with both groups containing radio buttons whose visual text is “Canada”. As such, I’ll change the accessible names to be “Canada the country” and “Canada goose”.Needless to canada goose store say, this was a rather different scenario from the one that canada goose coats the original dev had in her own app, but you get the idea.Important: While it was a question relating to radio buttons that prompted me to write this post, the steps apply to customizing the accessible names of many other Canada Goose online standard control types too. This includes controls like a ComboBox or Edit control, which in many UI frameworks won’t get an accessible name by default.Does the Narrator screen reader have canada goose clearance to account for an app’s UI framework?Narrator finds out all it needs to know about an app, through the Windows UI Automation (UIA) client API. The app process containing all the UI of interest to the user, is known as the “provider”. Which component is doing the work in the provider process cheap Canada Goose to build up the programmatic representation of the app’s UI is of no interest to Narrator. That provider could be a XAML, HTML, Win32, WinForms or WPF app, but all Narrator cares about is the programmatic representation of the UI that’s exposed through the UIA API.A tip on learning where UIA data is coming fromDespite having just said that Narrator doesn’t care which component in the provider process is generating the UIA data, sometimes I do care. The steps taken by an app dev to customize the programmatic representation of an app’s UI often depend on which UI framework is used by the app.So whenever someone points me to UI and asks how they can achieve some particular action around customizing the app’s programmatic accessibility, one of the first things I wonder is, what UI framework are we dealing with here? A quick way for me to get some idea of the answer, is for me to point the Inspect SDK tool to the UI, and check out the UIA ProviderDescription canada goose coats on sale property. That property is a long and mysterious string, but there may be something near the end of it that tells me what I need to know.Say I point the Inspect SDK tool to a button shown in the UI in the Calculator app. That tells me that the UIA provider for the button is the XAML framework. (Note that the ProviderDescription doesn’t include any mention of custom AutomationPeers if a XAML app uses them.)And as I point the Inspect SDK tool to parts of other apps, I can see what provider is generating the UIA data for that UI. Other UIA providers might be a part of the UI framework used to build a feature. For example, the Windows 10 Start Menu leverages the UIA provider included in the XAML framework. The Edge browser has a native UIA provider, and that provider is also used by Windows 10 HTML Store apps.It’s worth a comment on the “MSAA Proxy” listed above. Some older UI supports the legacy MSAA https://www.goosesale.ca accessibility API, and has not been updated to implement the UIA provider API. Yet a UIA client app like Narrator must be able to interact with the UI through the UIA API. In those cases, where practical UIA itself Canada Goose Parka will map the MSAA data being exposed by the UI, into UIA data for the UIA client. That work is being done by UIA’s MSAA Proxy. In that situation, the ProviderDescription will include “MSAA canada goose Proxy” somewhere in it.What about the UIA FrameworkId property?Checking the FrameworkId property associated with UI can also be somewhat interesting. For example, if I look at a button in the Calculator app or a tile in the Start Menu, the Inspect SDK tool tells me that the FrameworkId is “XAML”. And if I look at Visual Studio 2015, I get told the FrameworkId is “WPF”. That seems easier to digest than the ProviderDescription string right? But if I point Canada Goose Online the Inspect SDK tool to a page hosted in the Edge canadian goose jacket browser or to a Windows uk canada goose outlet 10 HTML Store app, I get told the FrameworkId is “Internet Explorer”, just as I would if I looked at a page hosted in the Internet Explorer browser itself. The Edge provider is not the same provider as that used by Internet Explorer. So while the FrameworkId might be interesting at times, I find the ProviderDescription more useful. (And besides, sometimes UI exposes no FrameworkId property at all.).