Friday, September 25, 2009

silverlight 3 accessibility

I am currently developing an application in Silverlight3 for a client and guess what, I am not able to use the very application I am developing.
Most digging around reveals that silverlight3 has implemented very minimal accessibility through UIA (the AutomationPeer class), which is minimally documented, hard to use by a developer who wants to make his/her app accessible, and even if the developer does somehow implement all that, the accessibility brought out is partial and (MS claims) is not used by the popular screen readers like jaws or wineyes.

A few examples:
Plain blocks of text using a textblock control cannot be accessed by a screen reader (somewhere in the documentation said to enable tabstop on textblocks to make them accessible but I couldn't find a tabstop property on textblock).

if I want to display a grid (table) on a page, jaws can only get the contents of a cell at a time in that grid when it is editable (provided the screen allows that), and then also, there is no way to get the header information read (because that is not editable).

Basically, the only accessibility I could find with the silverlight app is with controls like text box and drop downs and that too for existing text in there. There is no keyboard echo. If I need to read what I have written, I need to tab out and back in.
To make jaws read the label for a textbox, I need to define an extra attribute on the textbox in xaml markup (I couldn't make jaws speak the nearest textblock that contains the label).

Some of the above may be just because I am new to silverlight and don't know enough about the accessibility features. In the next few days, I'll experiment with UI spy and the accessibility tools from MS and see if I can make any more headway.