当选择第一个单元格时,JAWS屏幕阅读器会读取WPF应用程序中的所有TextBlock

时间:2017-05-16 15:08:46

标签: wpf xaml jaws-screen-reader

我们正在构建一个符合508标准的WPF应用程序并使用JAWS 18对其进行测试,我们发现的一件事是,当选择第一个项目时,同一网格的每个单元格中的TextBlocks都会被背对背读取。此外,如果您使用' shift' +' tab'只有当您使用“标签”时才向后移动选择。独自前进。我通过在列和行中创建一个带有Grid和TextBlocks的示例应用程序并选择左上角的单元格来测试它是否在某种程度上是Grids的属性,并且没有使JAWS读取Grid上的所有项目。所以我不认为它是WPF中Grid的一般属性。我想禁用此功能。

                           <ScrollViewer>
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="auto"/> //More of these
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>

                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="auto"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>

                                    <StackPanel Grid.Row="0"
                                                Grid.Column="0"
                                                Style="{StaticResource FacilityDetailsStackPanelStyle}"
                                                Visibility="{Binding SelectedContact.FirstName, Converter={StaticResource StringToVisibilityConverter}}">
                                        <TextBlock Text="{Binding Source={StaticResource ApplicationSettings}, Path=ContactNameLabelText}"/>
                                        <TextBlock>
                                            <TextBlock.Text>
                                                <MultiBinding StringFormat="{}{0} {1}">
                                                    <Binding Path="SelectedContact.FirstName"/>
                                                    <Binding Path="SelectedContact.LastName"/>
                                                </MultiBinding>
                                            </TextBlock.Text>
                                            <AutomationProperties.Name>
                                                <MultiBinding StringFormat="{}{0} {1} {2}">
                                                    <Binding Source="{StaticResource ApplicationSettings}" Path="ContactNameText"/>
                                                    <Binding Path="SelectedContact.FirstName"/>
                                                    <Binding Path="SelectedContact.LastName"/>
                                                </MultiBinding>
                                            </AutomationProperties.Name>
                                        </TextBlock>
                                    </StackPanel>

                                    <StackPanel Grid.Row="1"
                                                Grid.Column="0"
                                                Style="{StaticResource FacilityDetailsStackPanelStyle}"
                                                Visibility="{Binding Path=SelectedContact.JobTitle, Converter={StaticResource StringToVisibilityConverter}}">
                                        <TextBlock Text="{Binding Source={StaticResource ApplicationSettings}, Path=ContactJobTitleLabelText}"/>
                                        <TextBlock Text="{Binding SelectedContact.JobTitle}">
                                            <AutomationProperties.Name>
                                                <MultiBinding StringFormat="{}{0} {1}">
                                                    <Binding Source="{StaticResource ApplicationSettings}" Path="ContactJobTitleText"/>
                                                    <Binding Path="SelectedContact.JobTitle"/>
                                                </MultiBinding>
                                            </AutomationProperties.Name>
                                        </TextBlock>
                                    </StackPanel>
                               <Grid/> //After all the same type of StackPanel/TextBlock structure.
                          <ScrollViewer/>

SelectedContact是一个Contact业务类,它通过绑定到DataGrid上的SelectedItem属性来选择,其中ItemsSource是Contact对象的列表。

网格包装在ScrollViewer中,但我对此进行了评论,并且没有对该功能进行任何更改。 编辑:功能注释掉ScrollViewer没有任何变化,但是向所述ScrollViewer添加AutomationProperties.Name就解决了这个问题。

1 个答案:

答案 0 :(得分:0)

我们通过将AutomationProperties.Name属性添加到包装Grid的ScrollViewer来找到解决方案。当我们进入ScrollViewer时,它现在会读出我们绑定的文本。