Expondo informações básicas sobre elementos da interface do usuário

Expondo informações básicas sobre elementos da interface do usuário (XAML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Procurando a versão HTML/JavaScript deste tópico? Veja Expondo informações básicas sobre elementos da interface do usuário (HTML).

As tecnologias adaptativas, como leitores de tela, precisam de informações sobre os elementos de interface do usuário em um aplicativo. O sistema fornece as informações com base na representação de um aplicativo na estrutura de Automação da IU da Microsoft. As informações básicas sobre acessibilidade podem ser categorizadas em nome, função e valor. Este tópico descreve o XAML ou outro código para ajudar seu aplicativo a expor as informações básicas necessárias para as tecnologias adaptativas.

Nome acessível

Um nome acessível é uma cadeia de caracteres de texto curta e descritiva que o leitor de tela usa para anunciar um elemento de interface do usuário. Defina o nome acessível dos elementos de interface do usuário para que ele tenha um significado importante para a compreensão do conteúdo ou da interação com a interface do usuário. Esses elementos costumam incluir imagens, campos de entrada, botões, controles e regiões.

Esta tabela descreve como definir ou obter um nome acessível para os diversos tipos de elementos em uma interface do usuário XAML.

Tipo de elementoDescrição
Texto estáticoPara os elementos TextBlock e RichTextBlock, um nome acessível é determinado automaticamente do texto (interno) visível. Todo o texto no qual o elemento é usado como o nome. Veja Nome do texto interno.
ImagensO elemento XAML Image não tem um analógico direto para o atributo HTML alt do img e dos elementos similares. Use AutomationProperties.Name para fornecer um nome ou use a técnica de legendas. Veja Nomes acessíveis para imagens.
Elementos de formulário O nome acessível para um elemento de formulário deve ser o mesmo que o rótulo exibido para esse elemento. Veja Rótulos e LabeledBy.
Botões e links Por padrão, o nome acessível de um botão ou link se baseia no texto visível, usando as mesmas regras descritas em Nome do texto interno. Nos casos em que um botão contém somente uma imagem, use AutomationProperties.Name para fornecer uma equivalência somente de texto da ação pretendida do botão.

 

A maioria dos elementos de contêiner (como painéis) não promove o seu conteúdo como nome acessível. Isso é porque é o conteúdo do item que deve informar um nome e a função correspondente, não seu contêiner. O elemento de contêiner pode relatar que é um elemento que tem filhos em uma representação de Automação da Interface do Usuário, de tal forma que a lógica de tecnologia adaptativa possa atravessá-lo. Mas os usuários de tecnologias adaptativas geralmente não precisam saber sobre os contêineres e, assim, a maioria dos contêineres não é nomeada.

Função e valor

Os controles e outros elementos de interface do usuário que fazem parte do vocabulário XAML do Tempo de Execução do Windows implementam o suporte à Automação da Interface do Usuário para relatar a função e o valor como parte de suas definições. Você pode usar as ferramentas de Automação da Interface do Usuário para examinar as informações de função e valor para os controles de Tempo de Execução do Windows ou pode ler a documentação sobre as implementações de AutomationPeer para cada controle. As funções disponíveis em uma estrutura de Automação da IU são definidas na enumeração de AutomationControlType. Os clientes da Automação da Interface do Usuário, como as tecnologias adaptativas, podem obter as informações de função chamando métodos que a estrutura de Automação da IU expõe usando o AutomationPeer do controle.

Nem todos os controles têm um valor. Os controles que têm um valor relaram essas informações para a Automação de Interface do Usuário por meio dos pares e padrões que são suportados pelo controle. Por exemplo, um elemento de formulário TextBox tem um valor. Uma tecnologia adaptativa pode ser um cliente de Automação de Interface do Usuário e pode descobrir que existe um valor e qual é o valor. Neste caso específico, o TextBox suporta o padrão IValueProvider através das definições TextBoxAutomationPeer.

Observação  Nos casos em que você usa AutomationProperties.Name ou outras técnicas para fornecer o nome acessível explicitamente, não inclua o mesmo texto como é usado pelas informações de função ou tipo de controle no nome acessível. Por exemplo, não inclua cadeias de caracteres, como "botão" ou "lista" no nome. As informações de função e tipo provém de uma propriedade de Automação de Interface do Usuário diferente (LocalizedControlType) que é fornecida pelo suporte padrão ao controle de Automação de Interface do Usuário. Muitas tecnologias adaptativas acrescentam LocalizedControlType ao nome acessível e, portanto, duplicar a função no nome acessível pode resultar em palavras desnecessariamente repetidas. Por exemplo, se você der a um controle Button um nome acessível de "botão" ou incluir "botão" como última parte do nome, isto pode ser lido pelos leitores da tela como "botão botão". Será necessário testar esse aspecto de suas informações de acessibilidade usando o Narrador.
 

Influenciando as exibições de árvore de automação da IU

A estrutura de Automação da IU tem um conceito de exibições em árvore, onde os clientes da Automação da Interface do Usuário podem recuperar as relações entre os elementos de uma interface do usuário usando três visualizações possíveis: bruto, de controle e de conteúdo. A visualização de controle é a visualização usada frequentemente por clientes da Automação da Interface do Usuário, pois fornece uma boa representação e organização dos elementos em uma interface do usuário que são interativos. As ferramentas de teste geralmente permitem que você escolha qual exibição em árvore usar quando a ferramenta apresentar a organização de elementos.

Por padrão, qualquer classe derivada Control e alguns outros elementos aparecerão na visualização de controle quando a estrutura de Automação da IU representa a interface do usuário para um aplicativo de tempo de execução do Windows em C++, :C# ou Visual Basic. Mas às vezes você não quer que um elemento apareça na visualização por causa da composição da interface do usuário, onde esse elemento é a duplicação de informações ou a apresentação de informações que não são importantes para os cenários de acessibilidade. Use a propriedade anexada AutomationProperties.AccessibilityView para alterar como os elementos são expostos à exibições de árvore. Se você colocar um elemento na árvore Raw, a maioria das tecnologias adaptativas não relatará esse elemento como parte de suas exibições. Para ver mais exemplos de como isto funciona em controles existentes, abra o arquivo XAML de referência de design generic.xaml em um editor de texto e pesquise por AutomationProperties.AccessibilityView nos modelos.

Nome do texto interno

Para facilitar o uso de cadeiras de caracteres já existentes na interface do usuário visível para os valores de nome acessível, muitos dos controles e outros elementos de interface do usuário fornecem suporte para determinar automaticamente um nome acessível padrão com base no texto interno dentro do elemento ou a partir de valores de cadeias de caracteres das propriedades de conteúdo.

  • TextBlock, RichTextBlock, TextBox e RichTextBlock promovem cada o valor da propriedade Text como o nome acessível padrão.
  • Qualquer subclasse ContentControl usa uma técnica "ToString" iterativa para encontrar cadeias de caracteres no valor de Content e promover essas cadeias de caracteres como o nome acessível padrão.
Observação   Como imposto pela Automação da Interface do Usuário, o tamanho do nome acessível não pode exceder 2048 caracteres. Se uma cadeia de caracteres usada para determinação automática de nome acessível exceder esse limite, o nome acessível será truncado nesse momento.
 

Nomes acessíveis para imagens

Para oferecer suporte a leitores de tela e fornecer as informações básicas de identificação para cada elemento da interface do usuário, você pode ter que fornecer alternativas de texto para informações não textuais, como imagens e gráficos (excluindo todos os elementos puramente decorativos ou estruturais). Estes elementos não têm texto interno, assim, o nome acessível não terá um valor calculado. Você pode definir o nome acessível diretamente ao configurar a propriedade anexada AutomationProperties.Name como mostrado neste exemplo.


<Image Source="product.png"
  AutomationProperties.Name="An image of a customer using the product."/>

Como alternativa, considere incluir uma legenda de texto que aparece na interface do usuário visível e que também serve como as informações de acessibilidade associadas ao rótulo para o conteúdo da imagem. Aqui está um exemplo:


<Image HorizontalAlignment="Left" Width="480" x:Name="img_MyPix"
  Source="snoqualmie-NF.jpg"
  AutomationProperties.LabeledBy="{Binding ElementName=caption_MyPix}"/>
<TextBlock x:Name="caption_MyPix">
Mount Snoqualmie Skiing
</TextBlock>

Rótulos e LabeledBy

A maneira preferencial de associar um rótulo a um elemento de formulário é usar um TextBlock com um x:Name para o texto do rótulo e definir a propriedade anexada AutomationProperties.LabeledBy no elemento de formulário para fazer referência ao TextBlock de rotulamento por seu nome XAML. Se você usa esse padrão, quando o usuário clica no rótulo, o foco se move para o controle associado e as tecnologias adaptativas podem usar o texto do rótulo como o nome acessível para o campo de formulário. Aqui está um exemplo que mostra esta técnica.


 <StackPanel x:Name="LayoutRoot" Background="White">
   <StackPanel Orientation="Horizontal">
     <TextBlock Name="lbl_FirstName">First name</TextBlock>
     <TextBox
      AutomationProperties.LabeledBy="{Binding ElementName=lbl_FirstName}"
      Name="tbFirstName" Width="100"/>
   </StackPanel>
   <StackPanel Orientation="Horizontal">
     <TextBlock Name="lbl_LastName">Last name</TextBlock>
     <TextBox
      AutomationProperties.LabeledBy="{Binding ElementName=lbl_LastName}"
      Name="tbLastName" Width="100"/>
   </StackPanel>
 </StackPanel>

Descrição acessível (opcional)

Uma descrição acessível fornece informações adicionais de acessibilidade sobre um determinado elemento de interface do usuário. Normalmente, você fornece uma descrição acessível quando o nome acessível sozinho não informa adequadamente a finalidade do elemento.

O leitor de tela Narrador só lê a descrição acessível do elemento quando o usuário pede mais informações sobre o elemento, pressionando Caps Lock + F.

O nome acessível se destina a identificar o controle, em vez de fazê-lo para documentar completamente seu comportamento. Se a descrição curta não for suficiente para explicar o controle, você pode definir a propriedade anexada AutomationProperties.HelpText além de AutomationProperties.Name.

Testando a acessibilidade de forma precoce e frequente

Definitivamente, a melhor abordagem para suportar leitores de tela é testar o seu aplicativo usando, você mesmo, um leitor de tela. Isso lhe mostrará como se comporta o leitor de tela e as informações básicas de acessibilidade podem estar ausentes do aplicativo. Em seguida, você pode ajustar a interface do usuário ou os valores da propriedade de automação da interface do usuário de acordo. Para saber mais, consulte Testando a acessibilidade do aplicativo.

Uma das ferramentas que você pode usar para testar a acessibilidade é chamada AccScope. A ferramenta AccScope é especialmente útil porque você pode ver representações visuais de sua interface do usuário que representam como as tecnologias assistivas podem ver seu aplicativo como uma grade de automação. Em especial, há um modo Narrador que dá uma visão de como o Narrador obtém o texto a partir do seu aplicativo e como ele organiza os elementos da interface do usuário. O AccScope é projetado de modo que ele pode ser usado e útil ao longo de um ciclo de desenvolvimento de um aplicativo, mesmo durante a fase preliminar de projeto. Para saber mais, veja AccScope.

Nomes acessíveis de dados dinâmicos

O Tempo de Execução do Windows oferece suporte a muitos controles que podem ser usados para exibir valores que provêm de uma fonte de dados associada, por meio de um recurso conhecido como vinculação de dados. Quando você preenche as listas com itens de dados, talvez precise usar uma técnica que define os nomes acessíveis para itens de lista vinculada a dados depois que a lista inicial é preenchida. Para saber mais, veja o "Cenário 4" na Amostra de acessibilidade XAML.

Nomes acessíveis e localização

Para verificar se o nome acessível também é um elemento que está localizado, você deve usar técnicas corretas para armazenar cadeias de caracteres localizáveis como recursos e fazer referência às conexões de recursos com valoresx:Uid. Se o nome acessível é proveniente de um uso de AutomationProperties.Name definido explicitamente, verifique se a cadeia de caracteres também é localizável.

Observe que as propriedades anexadas como AutomationProperties utilizam uma sintaxe de qualificação especial para o nome do recurso, de modo que o recurso referencia a propriedade anexada aplicada a um elemento específico. Por exemplo, o nome do recurso para AutomationProperties.Name tal como aplicado a um elemento de interface do usuário chamado MediumButton é: MediumButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name. Para saber mais, veja Guia de início rápido: traduzindo recursos de interface do usuário.

Tópicos relacionados

AutomationProperties.Name
Exemplo de acessibilidade XAML
Testando a acessibilidade do seu aplicativo

 

 

Mostrar:
© 2017 Microsoft