Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 屏幕读取器未从WPF工具包读取DataGrid的内容_C#_Wpf_Xaml_Datagrid_Accessibility - Fatal编程技术网

C# 屏幕读取器未从WPF工具包读取DataGrid的内容

C# 屏幕读取器未从WPF工具包读取DataGrid的内容,c#,wpf,xaml,datagrid,accessibility,C#,Wpf,Xaml,Datagrid,Accessibility,我正在编写一个BHO,它使用ElementHost托管WPF用户控件。在用户控件中,我有一个绑定到可观察集合的DataGrid。所有功能都很好,只是屏幕阅读器没有读取内容(我使用NVDA进行测试,但QA使用JAWS) 我被限制在公共论坛上复制和粘贴代码,但我可以描述我正在创建的布局。有两个数据网格。一个包含可观察集合中的所有项,另一个是项的子集。每个datagrid都位于TabControl的单独选项卡项中。正如我所说的,有一个可观察的集合保存着我的业务对象。每个对象都绑定到datagrid中的

我正在编写一个BHO,它使用ElementHost托管WPF用户控件。在用户控件中,我有一个绑定到可观察集合的DataGrid。所有功能都很好,只是屏幕阅读器没有读取内容(我使用NVDA进行测试,但QA使用JAWS)

我被限制在公共论坛上复制和粘贴代码,但我可以描述我正在创建的布局。有两个数据网格。一个包含可观察集合中的所有项,另一个是项的子集。每个datagrid都位于TabControl的单独选项卡项中。正如我所说的,有一个可观察的集合保存着我的业务对象。每个对象都绑定到datagrid中的一行。有几个列要求我显示业务对象中的多个属性,因此我使用DataGridTemplateColumn。在CellStyle中,我设置了3个数据模板;一个用于编辑,一个用于添加,一个用于查看。视图DataTemplate与DataGridTemplateColumn.CellTemplate完全相同

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

还有一个按钮可以从远程服务器获取信息,将其转换为业务对象,并将其添加到可观察的集合中。datagrid可以毫无问题地加载新信息

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

更复杂的是,如果我在一个标签页中编辑一个项目并让它被阅读,然后转到另一个标签页并返回,它就不再阅读了

我觉得这与绑定和模板的交互方式有关,但我对这两者都不太了解,无法找到解决这一问题的方向。 任何帮助都将不胜感激


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

屏幕阅读器将读取生成的HTML,因此您可以发布HTML吗?请从头开始创建一个虚拟项目,仅在此处显示一些xaml和代码。这是IE外接程序的内部,使用元素宿主。据我所知,没有HTML可供查看。@gamealchest我创建了一个真正简单的数据网格,它读取起来没有问题,所以我需要重新创建更多我们正在做的事情。我会尽快发布。我创建了一个虚拟项目,并将其上传到我的skydrive此处()