Usando a fala para invocar elementos da interface do usuárioUsing Speech to Invoke UI Elements

O shell habilitado para voz (VES) é uma extensão da plataforma de fala do Windows que permite uma experiência de fala de primeira classe dentro de aplicativos, permitindo que os usuários usem a fala para invocar controles na tela e inserir texto por meio de ditado.Voice Enabled Shell (VES) is an extension to the Windows Speech Platform that enables a first-class speech experience inside apps, allowing users to use speech for invoking on-screen controls and to insert text via dictation. O VES se esforça para fornecer uma experiência comum de ponta a ponta que diz respeito a ti em todos os shells e dispositivos do Windows, com o mínimo de esforço necessário dos desenvolvedores de aplicativos.VES strives to provide a common end-to-end see-it-say-it experience on all Windows Shells and devices, with minimum effort required from app developers. Para conseguir isso, ele aproveita a plataforma de fala da Microsoft e a estrutura de automação da interface do usuário (UIA).To achieve this, it leverages the Microsoft Speech Platform and the UI Automation (UIA) framework.

Guia de experiência do usuárioUser experience walkthrough

Veja a seguir uma visão geral do que um usuário teria ao usar o VES no Xbox, e ele deve ajudar a definir o contexto antes de mergulhar nos detalhes de como o VES funciona.The following is an overview of what a user would experience when using VES on Xbox, and it should help set the context before diving into the details of how VES works.

  • O usuário ativa o console do Xbox e deseja navegar pelos seus aplicativos para encontrar algo de interesse:User turns on the Xbox console and wants to browse through their apps to find something of interest:

    Usuário: "Ei Cortana, abrir meus jogos e aplicativos"User: "Hey Cortana, open My Games and Apps"

  • O usuário é deixado no modo de escuta ativo (ALM), o que significa que o console agora está escutando o usuário para invocar um controle visível na tela, sem a necessidade de dizer "Ei Cortana" a cada vez.User is left in Active Listening Mode (ALM), meaning the console is now listening for the user to invoke a control that’s visible on the screen, without needing to say, “Hey Cortana” each time. Agora, o usuário pode alternar para exibir aplicativos e percorrer a lista de aplicativos:User can now switch to view apps and scroll through the app list:

    Usuário: "aplicativos"User: "applications"

  • Para rolar a exibição, o usuário pode simplesmente dizer:To scroll the view, user can simply say:

    Usuário: "rolar para baixo"User: "scroll down"

  • O usuário vê a arte da caixa para o aplicativo em que está interessado, mas esqueceu o nome.User sees the box art for the app they are interested in but forgot the name. O usuário solicita que os rótulos de dica de voz sejam exibidos:User asks for voice tip labels to be displayed:

    Usuário: "Mostrar rótulos"User: "show labels"

  • Agora que está claro o que dizer, o aplicativo pode ser iniciado:Now that it's clear what to say, the app can be launched:

    Usuário: "filmes e TV"User: "movies and TV"

  • Para sair do modo de escuta ativo, o usuário informa ao Xbox para parar de escutar:To exit active listening mode, user tells Xbox to stop listening:

    Usuário: "parar de escutar"User: "stop listening"

  • Posteriormente, uma nova sessão de escuta ativa pode ser iniciada com:Later on, a new active listening session can be started with:

    Usuário: "Ei Cortana, fazer uma seleção" ou "Ei Cortana, selecione"User: "Hey Cortana, make a selection" or "Hey Cortana, select"

Dependência de automação da interface do usuárioUI automation dependency

VES é um cliente de automação de interface do usuário e se baseia em informações expostas pelo aplicativo por meio de seus provedores de automação de interface do usuário.VES is a UI Automation client and relies on information exposed by the app through its UI Automation providers. Essa é a mesma infraestrutura que já está sendo usada pelo recurso de narrador em plataformas Windows.This is the same infrastructure already being used by the Narrator feature on Windows platforms. A automação da interface do usuário permite o acesso programático aos elementos da interface de usuários, incluindo o nome do controle, seu tipo e quais padrões de controle ele implementa.UI Automation enables programmatic access to user interface elements, including the name of the control, its type and what control patterns it implements. À medida que a interface do usuário for alterada no aplicativo, VES reagirá a eventos de atualização UIA e reanalisará a árvore de automação da interface do usuário atualizada para localizar todos os itens acionáveis, usando essas informações para criar uma gramática de reconhecimento de fala.As the UI changes in the app, VES will react to UIA update events and re-parse the updated UI Automation tree to find all the actionable items, using this information to build a speech recognition grammar.

Todos os aplicativos UWP têm acesso à estrutura de automação da interface do usuário e podem expor informações sobre a interface do usuário independentemente da estrutura de gráficos com base na qual se baseiam (XAML, DirectX/Direct3D, Xamarin, etc.).All UWP apps have access to the UI Automation framework and can expose information about the UI independent of which graphics framework they are built upon (XAML, DirectX/Direct3D, Xamarin, etc.). Em alguns casos, assim como o XAML, a maior parte do trabalho pesado é feita pela estrutura, reduzindo bastante os trabalhos necessários para dar suporte ao Narrator e ao VES.In some cases, like XAML, most of the heavy lifting is done by the framework, greatly reducing the work required to support Narrator and VES.

Para obter mais informações sobre a automação da interface do usuário, consulte conceitos básicos de automação da IU.For more info on UI Automation see UI Automation Fundamentals.

Nome de invocação de controleControl invocation name

O VES emprega o seguinte heurístico para determinar qual frase deve ser registrada com o reconhecedor de fala como o nome do controle (ou seja, o que o usuário precisa falar para invocar o controle).VES employs the following heuristic for determining what phrase to register with the speech recognizer as the control’s name (ie. what the user needs to speak to invoke the control). Essa também é a frase que será exibida no rótulo da dica de voz.This is also the phrase that will show up in the voice tip label.

Origem do nome em ordem de prioridade:Source of Name in order of priority:

  1. Se o elemento tiver uma LabeledBy Propriedade anexada, ves usará o AutomationProperties.Name deste rótulo de texto.If the element has a LabeledBy attached property, VES will use the AutomationProperties.Name of this text label.
  2. AutomationProperties.Name do elemento.AutomationProperties.Name of the element. Em XAML, o conteúdo de texto do controle será usado como o valor padrão para AutomationProperties.Name .In XAML, the text content of the control will be used as the default value for AutomationProperties.Name.
  3. Se o controle for um ListItem ou Button, VES procurará o primeiro elemento filho com um válido AutomationProperties.Name .If the control is a ListItem or Button, VES will look for the first child element with a valid AutomationProperties.Name.

Controles acionáveisActionable controls

VES considera um controle acionável se ele implementa um dos seguintes padrões de controle de automação:VES considers a control actionable if it implements one of the following Automation control patterns:

  • InvokePattern (por exemplo,InvokePattern (eg. Botão) – representa os controles que iniciam ou executam uma única ação não ambígua e não mantêm o estado quando ativados.Button)- Represents controls that initiate or perform a single, unambiguous action and do not maintain state when activated.

  • TogglePattern (por exemplo,TogglePattern (eg. Caixa de seleção) – representa um controle que pode percorrer um conjunto de Estados e manter um estado uma vez definido.Check Box) - Represents a control that can cycle through a set of states and maintain a state once set.

  • SelectionItemPattern (por exemplo,SelectionItemPattern (eg. Caixa de combinação) – representa um controle que atua como um contêiner para uma coleção de itens filho selecionáveis.Combo Box) - Represents a control that acts as a container for a collection of selectable child items.

  • ExpandCollapsePattern (por exemplo,ExpandCollapsePattern (eg. Caixa de combinação) – representa os controles que visualmente expandem para exibir conteúdo e recolher para ocultar o conteúdo.Combo Box) - Represents controls that visually expand to display content and collapse to hide content.

  • ScrollPattern (por exemplo,ScrollPattern (eg. Lista) – representa os controles que atuam como contêineres roláveis para uma coleção de elementos filho.List) - Represents controls that act as scrollable containers for a collection of child elements.

Contêineres roláveisScrollable containers

Para contêineres roláveis que dão suporte a ScrollPattern, o VES escutará comandos de voz como "rolar para a esquerda", "rolar para a direita", etc. e invocará a rolagem com os parâmetros apropriados quando o usuário disparar um desses comandos.For scrollable containers that support the ScrollPattern, VES will listen for voice commands like “scroll left”, “scroll right”, etc. and will invoke Scroll with the appropriate parameters when the user triggers one of these commands. Os comandos Scroll são injetados com base no valor das HorizontalScrollPercent VerticalScrollPercent Propriedades e.Scroll commands are injected based on the value of the HorizontalScrollPercent and VerticalScrollPercent properties. Por exemplo, se HorizontalScrollPercent for maior que 0, "rolar para a esquerda" será adicionado, se for menor que 100, "rolar para a direita" será adicionado e assim por diante.For instance, if HorizontalScrollPercent is greater than 0, “scroll left” will be added, if it’s less than 100, “scroll right” will be added, and so on.

Sobreposição do narradorNarrator overlap

O aplicativo do narrador também é um cliente de automação da interface do usuário e usa a AutomationProperties.Name propriedade como uma das fontes para o texto que ele lê para o elemento de interface do usuário selecionado no momento.The Narrator application is also a UI Automation client and uses the AutomationProperties.Name property as one of the sources for the text it reads for the currently selected UI element. Para fornecer uma experiência de acessibilidade melhor, muitos desenvolvedores de aplicativos Reclassificaram para sobrecarregar a Name propriedade com um longo texto descritivo com o objetivo de fornecer mais informações e contexto quando lidos pelo narrador.To provide a better accessibility experience many app developers have resorted to overloading the Name property with long descriptive text with the goal of providing more information and context when read by Narrator. No entanto, isso causa um conflito entre os dois recursos: VES precisa de frases curtas que correspondam ou correspondam ao texto visível do controle, enquanto o narrador se beneficia de frases mais longas e mais descritivas para dar um melhor contexto.However, this causes a conflict between the two features: VES needs short phrases that match or closely match the visible text of the control, while Narrator benefits from longer, more descriptive phrases to give better context.

Para resolver isso, começando com a atualização do Windows 10 para criadores, o Narrator foi atualizado para examinar também a AutomationProperties.HelpText propriedade.To resolve this, starting with Windows 10 Creators Update, Narrator was updated to also look at the AutomationProperties.HelpText property. Se essa propriedade não estiver vazia, o Narrator falará sobre o conteúdo além de AutomationProperties.Name .If this property is not empty, Narrator will speak its contents in addition to AutomationProperties.Name. Se HelpText estiver vazio, o Narrator só lerá o conteúdo do nome.If HelpText is empty, Narrator will only read the contents of Name. Isso permitirá que cadeias de caracteres mais descritivas sejam usadas quando necessário, mas mantém uma frase amigável de reconhecimento de fala mais curta na Name propriedade.This will enable longer descriptive strings to be used where needed, but maintains a shorter, speech recognition friendly phrase in the Name property.

Um diagrama que mostra o código por trás do botão que inclui AutomationProperties.Name e AutomationProperties. HelpText, mostrando que o shell habilitado para voz escuta o nome configurado.

Para obter mais informações, consulte Propriedades de automação para suporte de acessibilidade na interface do usuário.For more info see Automation Properties for Accessibility Support in UI.

ALM (modo de escuta ativo)Active Listening Mode (ALM)

Inserindo o ALMEntering ALM

No Xbox, o VES não está constantemente ouvindo a entrada de fala.On Xbox, VES is not constantly listening for speech input. O usuário precisa inserir o modo de escuta ativo explicitamente dizendo:The user needs to enter Active Listening Mode explicitly by saying:

  • "Ei Cortana, Select" ou“Hey Cortana, select”, or
  • "Ei Cortana, fazer uma seleção"“Hey Cortana, make a selection”

Há vários outros comandos da Cortana que também deixam o usuário em escuta ativa após a conclusão, por exemplo, "Ei Cortana, entrar" ou "Ei Cortana, Go Home".There are several other Cortana commands that also leave the user in active listening upon completion, for example “Hey Cortana, sign in” or “Hey Cortana, go home”.

A inserção do ALM terá o seguinte efeito:Entering ALM will have the following effect:

  • A sobreposição da Cortana será mostrada no canto superior direito, informando ao usuário que ele pode dizer o que eles veem.The Cortana overlay will be shown in the top right corner, telling the user they can say what they see. Enquanto o usuário estiver falando, os fragmentos de frase reconhecidos pelo reconhecedor de fala também serão mostrados nesse local.While the user is speaking, phrase fragments that are recognized by the speech recognizer will also be shown in this location.

  • VES analisa a árvore UIA, localiza todos os controles acionáveis, registra o texto na gramática do reconhecimento de fala e inicia uma sessão de escuta contínua.VES parses the UIA tree, finds all actionable controls, registers their text in the speech recognition grammar and starts a continuous listening session.

    Captura de tela com a opção para ver o rótulo diga Mostrar rótulos realçado.

Saindo do ALMExiting ALM

O sistema permanecerá no ALM enquanto o usuário estiver interagindo com a interface de usuário usando voz.The system will remain in ALM while the user is interacting with the UI using voice. Há duas maneiras de sair do ALM:There are two ways to exit ALM:

  • O usuário diz explicitamente, "parar de escutar" ouUser explicitly says, “stop listening”, or
  • Um tempo limite ocorrerá se não houver um reconhecimento positivo dentro de 17 segundos após a inserção do ALM ou desde o último reconhecimento positivoA timeout will occur If there isn’t a positive recognition within 17 seconds of entering ALM or since the last positive recognition

Invocando controlesInvoking controls

Quando no ALM, o usuário pode interagir com a interface do usuário usando voz.When in ALM the user can interact with the UI using voice. Se a interface do usuário estiver configurada corretamente (com propriedades de nome correspondentes ao texto visível), o uso de voz para executar ações deve ser uma experiência perfeita e natural.If the UI is configured correctly (with Name properties matching the visible text), using voice to perform actions should be a seamless, natural experience. O usuário deve ser capaz de apenas dizer o que vê na tela.The user should be able to just say what they see on the screen.

Sobrepor interface do usuário no XboxOverlay UI on Xbox

O nome VES deriva para um controle pode ser diferente do texto visível real na interface do usuário.The name VES derives for a control may be different than the actual visible text in the UI. Isso pode ser devido à Name Propriedade do controle ou ao LabeledBy elemento anexado que está sendo explicitamente definido como uma cadeia de caracteres diferente.This can be due to the Name property of the control or the attached LabeledBy element being explicitly set to different string. Ou, o controle não tem texto de GUI, mas apenas um elemento Icon ou image.Or, the control does not have GUI text but only an icon or image element.

Nesses casos, os usuários precisam de uma maneira de ver o que precisa ser dito para invocar esse controle.In these cases, users need a way to see what needs to be said in order to invoke such a control. Portanto, uma vez na escuta ativa, as dicas de voz podem ser exibidas dizendo "Mostrar rótulos".Therefore, once in active listening, voice tips can be displayed by saying “show labels”. Isso faz com que os rótulos da dica de voz apareçam na parte superior de cada controle acionável.This causes voice tip labels to appear on top of every actionable control.

Há um limite de 100 rótulos, portanto, se a interface do usuário do aplicativo tiver mais controles acionáveis do que 100, haverá alguns que não terão rótulos de dica de voz mostrados.There is a limit of 100 labels, so if the app’s UI has more actionable controls than 100 there will be some that will not have voice tip labels shown. Os rótulos que são escolhidos nesse caso não são determinísticos, pois depende da estrutura e da composição da interface do usuário atual como enumerados pela primeira vez na árvore UIA.Which labels are chosen in this case is not deterministic, as it depends on the structure and composition of the current UI as first enumerated in the UIA tree.

Depois que os rótulos de dica de voz são mostrados, não há nenhum comando para ocultá-los, eles permanecerão visíveis até que ocorra um dos seguintes eventos:Once voice tip labels are shown there is no command to hide them, they will remain visible until one of the following events occur:

  • o usuário invoca um controleuser invokes a control
  • o usuário navega para fora da cena atualuser navigates away from the current scene
  • o usuário diz "parar de escutar"user says, “stop listening”
  • o modo de escuta ativo atinge o tempo limiteactive listening mode times out

Local dos rótulos de dica de vozLocation of voice tip labels

Os rótulos de dicas de voz são horizontais e verticalmente centralizados dentro do BoundingRectangle do controle.Voice tip labels are horizontally and vertically centered within the control’s BoundingRectangle. Quando os controles são pequenos e rigidamente agrupados, os rótulos podem se sobrepor/se tornarem obscuros por outros e o VES tentará enviar esses rótulos por push para separá-los e garantir que fiquem visíveis.When controls are small and tightly grouped, the labels can overlap/become obscured by others and VES will try to push these labels apart to separate them and ensure they are visible. No entanto, não há garantia de que isso funcione 100% do tempo.However, this is not guaranteed to work 100% of the time. Se houver uma interface do usuário muito cheia, provavelmente fará com que alguns rótulos sejam obscurecidos por outras pessoas.If there is a very crowded UI, it will likely result in some labels being obscured by others. Examine sua interface do usuário com "Mostrar rótulos" para garantir que haja espaço adequado para a visibilidade da dica de voz.Please review your UI with “show labels” to ensure there is adequate room for voice tip visibility.

Captura de tela dos rótulos de dica de voz horizontal e verticalmente centralizada no retângulo delimitador do controle.

Caixas de combinaçãoCombo boxes

Quando uma caixa de combinação é expandida, cada item individual na caixa de combinação obtém seu próprio rótulo de dica de voz e, muitas vezes, estará sobre os controles existentes por trás da lista suspensa.When a combo box is expanded each individual item in the combo box gets its own voice tip label and often these will be on top of existing controls behind drop down list. Para evitar a apresentação de muddles e confusos de rótulos (onde os rótulos de item da caixa de combinação são combinados com os rótulos de controles por trás da caixa de combinação) quando uma caixa de combinação é expandida, somente os rótulos para seus itens filho serão mostrados; todos os outros rótulos de dica de voz ficarão ocultos.To avoid presenting a cluttered and confusing muddle of labels (where combo box item labels are intermixed with the labels of controls behind the combo box) when a combo box is expanded only the labels for its child items will be shown; all other voice tip labels will be hidden. O usuário pode selecionar um dos itens suspensos ou "fechar" a caixa de combinação.The user can then either select one of the drop-down items or “close” the combo box.

  • Rótulos em caixas de combinação recolhidas:Labels on collapsed combo boxes:

    Captura de tela da janela saída e vídeo de som com rótulos em caixas de combinação recolhidas.

  • Rótulos na caixa de combinação expandida:Labels on expanded combo box:

    Captura de tela da janela saída e vídeo de som com rótulos em uma caixa de combinação expandida.

Controles roláveisScrollable controls

Para controles roláveis, as dicas de voz para os comandos de rolagem serão centralizadas em cada uma das bordas do controle.For scrollable controls, the voice tips for the scroll commands will be centered on each of the edges of the control. As dicas de voz só serão mostradas para as direções de rolagem que são acionáveis, por exemplo, se a rolagem vertical não estiver disponível, "rolar para cima" e "rolar para baixo" não será mostrado.Voice tips will only be shown for the scroll directions that are actionable, so for example if vertical scrolling is not available, “scroll up” and “scroll down” will not be shown. Quando várias regiões roláveis estiverem presentes, o VES usará ordinais para diferenciá-las (por exemplo,When multiple scrollable regions are present VES will use ordinals to differentiate between them (eg. "Rolar para a direita 1", "rolar para a direita 2", etc.).“Scroll right 1”, “Scroll right 2”, etc.).

Captura de tela de rolar para a esquerda e rolar as dicas de voz para a direita em uma rolagem horizontal U.

DesambiguidadeDisambiguation

Quando vários elementos da interface do usuário têm o mesmo nome ou o reconhecedor de fala corresponde a vários candidatos, o VES entrará no modo de desambiguação.When multiple UI elements have the same Name, or the speech recognizer matched multiple candidates, VES will enter disambiguation mode. Neste modo, os rótulos de dica de voz serão mostrados para os elementos envolvidos para que o usuário possa selecionar o correto.In this mode voice tip labels will be shown for the elements involved so that the user can select the right one. O usuário pode cancelar o modo de desambiguação dizendo "Cancelar".The user can cancel out of disambiguation mode by saying "cancel".

Por exemplo:For example:

  • No modo de escuta ativo, antes da desambiguidade; o usuário diz "sou ambíguo":In Active Listening Mode, before disambiguation; user says, "Am I Ambiguous":

    Captura de tela do modo de escuta ativo com o agora você pode dizer o que você vê na opção exibida e nenhum rótulo nos botões.

  • Ambos os botões correspondidos; desambiguidade iniciada:Both buttons matched; disambiguation started:

    Captura de tela do modo de escuta ativo com a opção que você deseja exibir e os rótulos item 1 e item 2 nos botões.

  • Mostrando a ação de clique quando "Select 2" foi escolhido:Showing click action when "Select 2" was chosen:

    Captura de tela do modo de escuta ativo com o agora você pode dizer o que vê a opção exibida e eu sou o rótulo ambíguo no primeiro botão.

Interface de usuário de exemploSample UI

Aqui está um exemplo de uma interface do usuário baseada em XAML, definindo o AutomationProperties.Name de várias maneiras:Here’s an example of a XAML based UI, setting the AutomationProperties.Name in various ways:

<Page
    x:Class="VESSampleCSharp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:VESSampleCSharp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Button x:Name="button1" Content="Hello World" HorizontalAlignment="Left" Margin="44,56,0,0" VerticalAlignment="Top"/>
        <Button x:Name="button2" AutomationProperties.Name="Launch Game" Content="Launch" HorizontalAlignment="Left" Margin="44,106,0,0" VerticalAlignment="Top" Width="99"/>
        <TextBlock AutomationProperties.Name="Day of Week" x:Name="label1" HorizontalAlignment="Left" Height="22" Margin="168,62,0,0" TextWrapping="Wrap" Text="Select Day of Week:" VerticalAlignment="Top" Width="137"/>
        <ComboBox AutomationProperties.LabeledBy="{Binding ElementName=label1}" x:Name="comboBox" HorizontalAlignment="Left" Margin="310,57,0,0" VerticalAlignment="Top" Width="120">
            <ComboBoxItem Content="Monday" IsSelected="True"/>
            <ComboBoxItem Content="Tuesday"/>
            <ComboBoxItem Content="Wednesday"/>
            <ComboBoxItem Content="Thursday"/>
            <ComboBoxItem Content="Friday"/>
            <ComboBoxItem Content="Saturday"/>
            <ComboBoxItem Content="Sunday"/>
        </ComboBox>
        <Button x:Name="button3" HorizontalAlignment="Left" Margin="44,156,0,0" VerticalAlignment="Top" Width="213">
            <Grid>
                <TextBlock AutomationProperties.Name="Accept">Accept Offer</TextBlock>
                <TextBlock Margin="0,25,0,0" Foreground="#FF5A5A5A">Exclusive offer just for you</TextBlock>
            </Grid>
        </Button>
    </Grid>
</Page>

Usar o exemplo acima é a aparência da interface do usuário com e sem rótulos de dicas de voz.Using the above sample here is what the UI will look like with and without voice tip labels.

  • No modo de escuta ativo, sem rótulos mostrados:In Active Listening Mode, without labels shown:

    Captura de tela do modo de escuta ativo com o para ver rótulos, digamos que a opção Mostrar rótulos seja exibida e nenhum rótulo mostrado.

  • No modo de escuta ativo, depois que o usuário diz "Mostrar rótulos":In Active Listening Mode, after user says "show labels":

    Captura de tela do modo de escuta ativo com a opção se terminar, diga parar a escuta exibida e os rótulos mostrados nos controles U I.

No caso do button1 , o XAML preenche automaticamente a AutomationProperties.Name propriedade usando texto do conteúdo de texto visível do controle.In the case of button1, XAML auto populates the AutomationProperties.Name property using text from the control’s visible text content. É por isso que há um rótulo de dica de voz, embora não haja um AutomationProperties.Name conjunto explícito.This is why there is a voice tip label even though there isn't an explicit AutomationProperties.Name set.

Com o button2 , definimos explicitamente AutomationProperties.Name como algo diferente do texto do controle.With button2, we explicitly set the AutomationProperties.Name to something other than the text of the control.

Com comboBox o, usamos a LabeledBy propriedade para fazer referência label1 como a origem da automação Name e, em, label1 definimos o AutomationProperties.Name para uma frase mais natural do que o que é renderizado na tela ("dia da semana" em vez de "selecionar dia da semana").With comboBox, we used the LabeledBy property to reference label1 as the source of the automation Name, and in label1 we set the AutomationProperties.Name to a more natural phrase than what is rendered on screen (“Day of Week” rather than “Select Day of Week”).

Finalmente, with button3 , ves captura o Name do primeiro elemento filho, pois button3 ele não tem um AutomationProperties.Name conjunto.Finally, with button3, VES grabs the Name from the first child element since button3 itself does not have an AutomationProperties.Name set.

Confira tambémSee also