Screen Reader无法从WPF Toolkit读取DataGrid的内容

时间:2014-01-27 22:27:29

标签: c# wpf xaml datagrid accessibility

我正在编写一个使用ElementHost来托管WPF用户控件的BHO。在用户控件中,我有一个绑定到Observable Collection的DataGrid。一切都运行良好,除了屏幕阅读器没有读取内容(我使用NVDA进行测试,但QA正在使用JAWS)。

我受限于副本&在公共论坛上粘贴代码,但我可以描述我正在创建的布局。有两个datagrid。一个包含Observable Collection中的所有项目,另一个包含项目的子集。每个数据网格都位于TabControl的单独Tab项中。正如我所说,有一个ObservableCollection来保存我的业务对象。每个对象绑定到数据网格中的一行。有几列需要我从业务对象中显示多个属性,所以我使用的是DataGridTemplateColumn。在CellStyle中,我设置了3个DataTemplates;一个用于编辑,一个用于添加,一个用于视图。视图DataTemplate与DataGridTemplateColumn.CellTemplate完全相同。

其中一列保存我的操作按钮。其中一个按钮是一个编辑按钮,它只是将编辑模板应用于行单元格。在datagrid之外,我有一个按钮,它将向ObservableCollection添加一个新的默认项,在datagrid上调用UpdateLayout,然后将新项的DataTemplate设置为添加模板。

还有一个按钮可以从远程服务器获取信息,将其转换为业务对象并将其添加到Observable Collection。数据网格没有问题地加载新信息。

当我使用该函数从数据库中提取对象时,屏幕阅读器将不会读取任何信息。如果单击编辑按钮,则按预期读取所有内容。返回“视图”DataTemplate后,所有内容都按预期读取。如果我使用“添加”按钮,则所有内容都会按预期读取。

为了使这更复杂,如果我在一个标签页中编辑一个项目并让它被阅读,那么转到另一个标签页然后回来,它就不再阅读了。

我感觉它与绑定和模板的交互方式有关,但我不知道要么找出解决这个问题的方向。 任何帮助将不胜感激。

编辑:当我创建虚拟项目以显示问题时,我发现问题不仅限于模板列。我创建了一个带有字符串属性的业务对象,创建了一个ObservableCollection,其中包含10个对象,并将每个属性绑定到DataGridTextColumn,它只读取网格名称和列索引......从不读取内容。

0 个答案:

没有答案