我们正在构建一个符合 508 的 WPF 应用程序,并使用 JAWS 18 对其进行测试,我们发现的一件事是,当选择第一项时,同一网格的每个单元格中的 TextBlocks 都是背靠背读取的。此外,如果您使用"shift"+"tab"向后移动选择,则仅当您单独使用"tab"并向前移动时,它才起作用。我测试了它是否是网格的属性,方法是在列和行中制作一个带有网格和文本块的示例应用程序,并选择左上角的单元格,并且这并没有使 JAWS 读取网格上的所有项目。所以我不认为这是 WPF 中网格的一般属性。我想禁用此功能。
<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 是通过绑定到数据网格上的 SelectedItem 属性来选择的联系人业务类,其中 ItemsSource 是联系人对象的列表。
网格被包装在 ScrollViewer 中,但我将其注释掉,并且函数没有更改。编辑:注释掉ScrollViewer的功能没有变化,但是向所述ScrollViewer添加AutomationProperties.Name
是解决问题的原因。
我们通过将AutomationProperties.Name
属性添加到包装网格的 ScrollViewer 中得出了一个解决方案。当我们进入ScrollViewer时,它现在读出我们绑定的文本。