【发布时间】:2014-08-19 12:35:27
【问题描述】:
我有一个包含自定义 WPF 窗口的应用程序,用于显示类似于 Win32 消息框的弹出窗口。
作为要求的一部分,应用程序必须可以通过屏幕阅读器访问,特别是 JAWS。我在让屏幕阅读器读取对话框中的文本时遇到问题,但它会读取按钮中的值。
XAML中的代码如下
<Window x:Class="UserControls.ModalDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:converters="clr-namespace:UserControls.Converters"
mc:Ignorable="d"
d:DesignHeight="160" d:DesignWidth="400" MinHeight="85" MinWidth="400" MaxWidth="400" SizeToContent="Height" Height="Auto"
WindowStartupLocation="CenterScreen" ResizeMode="NoResize" Title="Popup Dialog">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<StackPanel.Resources>
<converters:DisplayIconToSystemIconConverter x:Key="DisplayIconToSystemIconConverter"/>
</StackPanel.Resources>
<Image Source="{Binding IconType, Converter={StaticResource DisplayIconToSystemIconConverter}}" Height="32" Width="32" Margin="0,0,10,0"/>
<TextBlock Name="TextBlock" Margin="20,10,0,0" TextWrapping="Wrap" Width="350" Foreground="DarkSlateGray" FontSize="10" FontWeight="Normal">
<Run Text="Some text in the dialog"/>
</TextBlock>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,5,0">
<Button Name="Option1Button" Content="OK" Padding="5,0,5,0" Margin="0,20,5,0" MinWidth="100" IsDefault="True" />
<Button Cancel Padding="5,0,5,0" Margin="2,20,10,0" MinWidth="75" IsCancel="True" Visibility="Visible"/>
</StackPanel>
</StackPanel></Window>
此代码在调用时正确显示弹出窗口,但屏幕阅读器只会读取两次标题。
如果我在窗口中添加一个空的 ListView 控件作为 TextBlock 之后的下一个元素,屏幕阅读器会正确读取对话框文本,尽管这两个控件没有显式链接,但我不能在控制,因为它会影响布局。
有没有办法让屏幕阅读器在控件中也没有列表视图的情况下正确读取 TextBlock 文本?
【问题讨论】:
标签: wpf xaml accessibility screen-readers