Utilisation de la reconnaissance vocale pour appeler des éléments d’interface utilisateurUsing Speech to Invoke UI Elements

Le shell compatible avec Voice (VES) est une extension de la plateforme Windows Speech qui permet une expérience vocale de premier ordre dans les applications, ce qui permet aux utilisateurs d’utiliser la reconnaissance vocale pour appeler des contrôles à l’écran et insérer du texte par le biais de la dictée.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. Le système VES s’efforce de fournir une expérience de bout en bout de bout en bout sur l’ensemble des shells et appareils Windows, avec un minimum d’effort requis des développeurs d’applications.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. Pour ce faire, il tire parti de la plateforme Microsoft Speech et de l’infrastructure UI Automation (UIA).To achieve this, it leverages the Microsoft Speech Platform and the UI Automation (UIA) framework.

Démonstration de l’expérience utilisateurUser experience walkthrough

Vous trouverez ci-dessous une vue d’ensemble de ce qu’un utilisateur peut rencontrer lors de l’utilisation de VES sur Xbox, et il devrait vous aider à définir le contexte avant de plonger dans les détails du fonctionnement du système VES.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.

  • L’utilisateur active la console Xbox et souhaite parcourir ses applications pour trouver un intérêt :User turns on the Xbox console and wants to browse through their apps to find something of interest:

    Utilisateur : « Hey Cortana, ouvrir mes jeux et applications »User: "Hey Cortana, open My Games and Apps"

  • L’utilisateur reste en mode d’écoute active (ALM), ce qui signifie que la console est à l’écoute de l’utilisateur pour appeler un contrôle visible à l’écran, sans qu’il soit nécessaire de dire « Hey Cortana » à chaque fois.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. L’utilisateur peut maintenant basculer vers afficher les applications et faire défiler la liste des applications :User can now switch to view apps and scroll through the app list:

    Utilisateur : « applications »User: "applications"

  • Pour faire défiler la vue, l’utilisateur peut simplement indiquer :To scroll the view, user can simply say:

    Utilisateur : « défilement vers le dessous »User: "scroll down"

  • L’utilisateur voit l’image de la boîte de l’application qui l’intéresse, mais a oublié le nom.User sees the box art for the app they are interested in but forgot the name. L’utilisateur demande l’affichage des étiquettes de pourboires vocaux :User asks for voice tip labels to be displayed:

    Utilisateur : « afficher les étiquettes »User: "show labels"

  • Maintenant qu’il est clair que vous pouvez indiquer, l’application peut être lancée :Now that it's clear what to say, the app can be launched:

    Utilisateur : « films et TV »User: "movies and TV"

  • Pour quitter le mode d’écoute active, l’utilisateur demande à Xbox d’arrêter l’écoute :To exit active listening mode, user tells Xbox to stop listening:

    Utilisateur : « arrêter l’écoute »User: "stop listening"

  • Plus tard, une nouvelle session d’écoute active peut être démarrée avec :Later on, a new active listening session can be started with:

    Utilisateur : « Hey Cortana, effectuer une sélection » ou « Hey Cortana, Select »User: "Hey Cortana, make a selection" or "Hey Cortana, select"

Dépendance UI AutomationUI automation dependency

Le système VES est un client UI Automation et s’appuie sur les informations exposées par l’application par le biais de ses fournisseurs UI Automation.VES is a UI Automation client and relies on information exposed by the app through its UI Automation providers. Il s’agit de la même infrastructure que celle déjà utilisée par la fonctionnalité narrateur sur les plateformes Windows.This is the same infrastructure already being used by the Narrator feature on Windows platforms. UI Automation permet l’accès par programmation aux éléments de l’interface utilisateur, y compris le nom du contrôle, son type et les modèles de contrôle qu’il implémente.UI Automation enables programmatic access to user interface elements, including the name of the control, its type and what control patterns it implements. Lorsque l’interface utilisateur est modifiée dans l’application, VES réagit aux événements de mise à jour UIA et réanalyse l’arborescence UI Automation mise à jour pour trouver tous les éléments actionnables, à l’aide de ces informations pour générer une grammaire de reconnaissance vocale.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.

Toutes les applications UWP ont accès à l’infrastructure UI Automation et peuvent exposer des informations sur l’interface utilisateur, indépendamment de l’infrastructure graphique sur laquelle elles sont basées (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.). Dans certains cas, comme XAML, la majeure partie du travail est effectuée par l’infrastructure, ce qui réduit considérablement le travail requis pour prendre en charge Narrator et 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.

Pour plus d’informations sur UI Automation, consultez notions de base d’UI Automation.For more info on UI Automation see UI Automation Fundamentals.

Nom de l’appel de contrôleControl invocation name

Le système VES utilise l’heuristique suivante pour déterminer quelle phrase doit s’inscrire auprès du module de reconnaissance vocale comme nom du contrôle (par exemple, ce que l’utilisateur doit parler pour appeler le contrôle).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). Il s’agit également de l’expression qui s’affiche dans l’étiquette de Conseil vocal.This is also the phrase that will show up in the voice tip label.

Source de nom par ordre de priorité :Source of Name in order of priority:

  1. Si l’élément a une LabeledBy propriété jointe, ves utilise le AutomationProperties.Name de cette étiquette de texte.If the element has a LabeledBy attached property, VES will use the AutomationProperties.Name of this text label.
  2. AutomationProperties.Name de l’élément.AutomationProperties.Name of the element. En XAML, le contenu de texte du contrôle sera utilisé comme valeur par défaut pour AutomationProperties.Name .In XAML, the text content of the control will be used as the default value for AutomationProperties.Name.
  3. Si le contrôle est un ListItem ou un bouton, le système VES recherche le premier élément enfant avec un valide AutomationProperties.Name .If the control is a ListItem or Button, VES will look for the first child element with a valid AutomationProperties.Name.

Contrôles actionnablesActionable controls

Le système VES considère qu’un contrôle est exploitable s’il implémente l’un des modèles de contrôle Automation suivants :VES considers a control actionable if it implements one of the following Automation control patterns:

  • InvokePattern (par exemple,InvokePattern (eg. Button)-représente les contrôles qui initialisent ou exécutent une action unique et non ambiguë et ne maintiennent pas l’État lorsqu’ils sont activés.Button)- Represents controls that initiate or perform a single, unambiguous action and do not maintain state when activated.

  • TogglePattern (par exemple,TogglePattern (eg. Case à cocher) : représente un contrôle qui peut parcourir un ensemble d’États et conserver un État une fois défini.Check Box) - Represents a control that can cycle through a set of states and maintain a state once set.

  • SelectionItemPattern (par exemple,SelectionItemPattern (eg. Zone de liste déroulante) : représente un contrôle qui agit comme un conteneur pour une collection d’éléments enfants sélectionnables.Combo Box) - Represents a control that acts as a container for a collection of selectable child items.

  • ExpandCollapsePattern (par exemple,ExpandCollapsePattern (eg. Zone de liste déroulante)-représente les contrôles qui se développent visuellement pour afficher le contenu et réduire pour masquer le contenu.Combo Box) - Represents controls that visually expand to display content and collapse to hide content.

  • ScrollPattern (par exemple,ScrollPattern (eg. List)-représente les contrôles qui jouent le rôle de conteneurs à défilement pour une collection d’éléments enfants.List) - Represents controls that act as scrollable containers for a collection of child elements.

Conteneurs à défilementScrollable containers

Pour les conteneurs pouvant faire l’objet d’un défilement qui prennent en charge ScrollPattern, le système VES écoute les commandes vocales telles que « faire défiler vers la gauche », « faire défiler vers la droite », etc., et appelle le défilement avec les paramètres appropriés lorsque l’utilisateur déclenche l’une de ces commandes.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. Les commandes de défilement sont injectées en fonction de la valeur des HorizontalScrollPercent VerticalScrollPercent Propriétés et.Scroll commands are injected based on the value of the HorizontalScrollPercent and VerticalScrollPercent properties. Par exemple, si HorizontalScrollPercent est supérieur à 0, le défilement vers la gauche est ajouté, s’il est inférieur à 100, « Scroll Right » est ajouté, et ainsi de suite.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.

Chevauchement du narrateurNarrator overlap

L’application narrateur est également un client UI Automation et utilise la AutomationProperties.Name propriété comme l’une des sources du texte qu’elle lit pour l’élément d’interface utilisateur actuellement sélectionné.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. Pour offrir une meilleure expérience d’accessibilité, de nombreux développeurs d’applications ont recouru à la surcharge de la Name propriété avec du texte descriptif long, avec l’objectif de fournir plus d’informations et de contexte lorsqu’ils sont lus par Narrator.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. Toutefois, cela provoque un conflit entre les deux fonctionnalités : le système VES a besoin d’expressions courtes qui correspondent ou correspondent étroitement au texte visible du contrôle, tandis que le narrateur bénéficie de plus longues expressions descriptives pour offrir un meilleur contexte.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.

Pour résoudre ce dernier, à compter de Windows 10 Creators Update, Narrator a été mis à jour pour examiner également la AutomationProperties.HelpText propriété.To resolve this, starting with Windows 10 Creators Update, Narrator was updated to also look at the AutomationProperties.HelpText property. Si cette propriété n’est pas vide, Narrator parle son contenu en plus de AutomationProperties.Name .If this property is not empty, Narrator will speak its contents in addition to AutomationProperties.Name. Si HelpText est vide, Narrator lira uniquement le contenu du nom.If HelpText is empty, Narrator will only read the contents of Name. Cela permet d’utiliser des chaînes descriptives plus longues lorsque cela est nécessaire, mais conserve une expression plus rapide et conviviale de reconnaissance vocale dans la Name propriété.This will enable longer descriptive strings to be used where needed, but maintains a shorter, speech recognition friendly phrase in the Name property.

Un diagramme montrant le code derrière le bouton qui comprend AutomationProperties.Name et AutomationProperties. HelpText montrant que le shell activé pour la voix écoute le nom configure.

Pour plus d’informations , consultez Propriétés d’Automation pour la prise en charge de l’accessibilité dans l’interface utilisateur.For more info see Automation Properties for Accessibility Support in UI.

Mode d’écoute active (ALM)Active Listening Mode (ALM)

Entrée de ALMEntering ALM

Sur Xbox, le système VES n’écoute pas constamment les entrées vocales.On Xbox, VES is not constantly listening for speech input. L’utilisateur doit entrer explicitement le mode d’écoute actif en disant :The user needs to enter Active Listening Mode explicitly by saying:

  • « Hey Cortana, SELECT » ou“Hey Cortana, select”, or
  • « Hey Cortana, effectuer une sélection »“Hey Cortana, make a selection”

Il existe plusieurs autres commandes Cortana qui laissent également l’utilisateur actif écouter à l’achèvement, par exemple « Hey Cortana, se connecter » ou « Hey Cortana, Go chez moi ».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”.

L’entrée de ALM aura les effets suivants :Entering ALM will have the following effect:

  • La superposition Cortana s’affiche dans l’angle supérieur droit, indiquant à l’utilisateur qu’il peut dire ce qu’il voit.The Cortana overlay will be shown in the top right corner, telling the user they can say what they see. Pendant que l’utilisateur parle, les fragments d’expression reconnus par le module de reconnaissance vocale s’affichent également à cet emplacement.While the user is speaking, phrase fragments that are recognized by the speech recognizer will also be shown in this location.

  • VES analyse l’arborescence UIA, recherche tous les contrôles actionnables, inscrit son texte dans la grammaire de la reconnaissance vocale et démarre une session d’écoute continue.VES parses the UIA tree, finds all actionable controls, registers their text in the speech recognition grammar and starts a continuous listening session.

    Capture d’écran avec l’option pour voir l’étiquette afficher les étiquettes en surbrillance.

Quitter ALMExiting ALM

Le système restera en ALM pendant que l’utilisateur interagit avec l’interface utilisateur à l’aide de la voix.The system will remain in ALM while the user is interacting with the UI using voice. Il existe deux façons de quitter ALM :There are two ways to exit ALM:

  • L’utilisateur dit explicitement « arrêter l’écoute », ouUser explicitly says, “stop listening”, or
  • Un dépassement de délai se produit s’il n’y a pas de reconnaissance positive dans les 17 secondes qui ont été entrées dans la partie ALM ou depuis la dernière reconnaissance positiveA timeout will occur If there isn’t a positive recognition within 17 seconds of entering ALM or since the last positive recognition

Appeler des contrôlesInvoking controls

Dans ALM, l’utilisateur peut interagir avec l’interface utilisateur à l’aide de la voix.When in ALM the user can interact with the UI using voice. Si l’interface utilisateur est correctement configurée (avec les propriétés de nom correspondant au texte visible), l’utilisation de la voix pour effectuer des actions doit être une expérience naturelle et transparente.If the UI is configured correctly (with Name properties matching the visible text), using voice to perform actions should be a seamless, natural experience. L’utilisateur doit pouvoir simplement indiquer ce qu’il voit à l’écran.The user should be able to just say what they see on the screen.

Superposition de l’interface utilisateur sur XboxOverlay UI on Xbox

Le nom VES dérivé pour un contrôle peut être différent du texte visible réel dans l’interface utilisateur.The name VES derives for a control may be different than the actual visible text in the UI. Cela peut être dû à la Name propriété du contrôle ou LabeledBy à l’élément attaché explicitement défini sur une chaîne différente.This can be due to the Name property of the control or the attached LabeledBy element being explicitly set to different string. Ou bien, le contrôle n’a pas de texte d’interface utilisateur graphique, mais uniquement un élément icône ou image.Or, the control does not have GUI text but only an icon or image element.

Dans ces cas, les utilisateurs ont besoin d’un moyen de voir ce qui doit être dit pour appeler ce type de contrôle.In these cases, users need a way to see what needs to be said in order to invoke such a control. Par conséquent, une fois dans l’écoute active, vous pouvez afficher des conseils vocaux en disant « afficher les étiquettes ».Therefore, once in active listening, voice tips can be displayed by saying “show labels”. Cela entraîne l’affichage des étiquettes de pourboires vocaux au-dessus de chaque contrôle actionnable.This causes voice tip labels to appear on top of every actionable control.

Il existe une limite de 100 étiquettes. par conséquent, si l’interface utilisateur de l’application a plus de contrôles actionnables que 100, cela signifie que les étiquettes de Conseil vocal ne sont pas affichées.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. Dans ce cas, les étiquettes choisies ne sont pas déterministes, car elles dépendent de la structure et de la composition de l’interface utilisateur actuelle, comme d’abord énumérée dans l’arborescence 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.

Une fois que les étiquettes de Conseil vocal sont affichées, il n’y a aucune commande permettant de les masquer, elles restent visibles jusqu’à ce que l’un des événements suivants se produise :Once voice tip labels are shown there is no command to hide them, they will remain visible until one of the following events occur:

  • l’utilisateur appelle un contrôleuser invokes a control
  • l’utilisateur quitte la scène actuelleuser navigates away from the current scene
  • l’utilisateur dit « arrêter l’écoute »user says, “stop listening”
  • dépassement du délai d’attente en mode d’écoute activeactive listening mode times out

Emplacement des étiquettes de Conseil vocalLocation of voice tip labels

Les étiquettes de pourboire vocal sont centrées horizontalement et verticalement dans le BoundingRectangle du contrôle.Voice tip labels are horizontally and vertically centered within the control’s BoundingRectangle. Lorsque les contrôles sont petits et étroitement regroupés, les étiquettes peuvent se chevaucher/être masquées par d’autres et VES tente de pousser ces étiquettes pour les séparer et s’assurer qu’elles sont visibles.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. Toutefois, il n’est pas garanti qu’il fonctionne 100% du temps.However, this is not guaranteed to work 100% of the time. S’il existe une interface utilisateur très encombrée, il est probable que certaines étiquettes soient masquées par d’autres.If there is a very crowded UI, it will likely result in some labels being obscured by others. Vérifiez votre interface utilisateur avec « afficher les étiquettes » pour vous assurer qu’il y a suffisamment d’espace pour la visibilité de l’info-bulle.Please review your UI with “show labels” to ensure there is adequate room for voice tip visibility.

Capture d’écran des étiquettes de Conseil vocal horizontalement et verticalement centrées dans le rectangle englobant du contrôle.

Zones de liste modifiableCombo boxes

Lorsqu’une zone de liste déroulante est développée, chaque élément individuel de la zone de liste déroulante reçoit son propre étiquette de Conseil vocale et, souvent, les contrôles existants de la liste déroulante.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. Pour éviter de présenter un muddle encombré et confus d’étiquettes (où les étiquettes des éléments de zone de liste déroulante sont mélangées avec les étiquettes des contrôles situés derrière la zone de liste déroulante) lorsqu’une zone de liste déroulante est développée, seules les étiquettes de ses éléments enfants sont affichées. toutes les autres étiquettes de Conseil vocal sont masquées.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. L’utilisateur peut ensuite sélectionner l’un des éléments de liste déroulante ou « fermer » la zone de liste déroulante.The user can then either select one of the drop-down items or “close” the combo box.

  • Étiquettes sur les zones de liste déroulante réduites :Labels on collapsed combo boxes:

    Capture d’écran de la fenêtre de sortie vidéo et d’affichage avec des étiquettes sur des zones de liste déroulante réduites.

  • Étiquettes sur la zone de liste déroulante développée :Labels on expanded combo box:

    Capture d’écran de la fenêtre de sortie vidéo et d’affichage avec des étiquettes sur une zone de liste déroulante développée.

Contrôles à défilementScrollable controls

Pour les contrôles à défilement, les conseils vocaux pour les commandes de défilement sont centrés sur chacun des bords du contrôle.For scrollable controls, the voice tips for the scroll commands will be centered on each of the edges of the control. Les conseils vocaux s’affichent uniquement pour les directions de défilement qui sont actionnables. ainsi, par exemple, si le défilement vertical n’est pas disponible, le fait de faire défiler vers le haut et de faire défiler vers le haut ne s’affiche pas.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. Lorsque plusieurs régions défilantes sont présentes, le système VES utilise des ordinaux pour les différencier (par exemple,When multiple scrollable regions are present VES will use ordinals to differentiate between them (eg. « Faire défiler vers la droite 1 », « faire défiler vers la droite 2 », etc.).“Scroll right 1”, “Scroll right 2”, etc.).

Capture d’écran des conseils de défilement vers la gauche et de défilement vers la droite sur un point I de défilement horizontal.

Lever les ambiguïtésDisambiguation

Quand plusieurs éléments d’interface utilisateur ont le même nom ou que le module de reconnaissance vocale a mis en correspondance plusieurs candidats, le système VES entrera en mode de désambiguïsation.When multiple UI elements have the same Name, or the speech recognizer matched multiple candidates, VES will enter disambiguation mode. Dans ce mode, les étiquettes vocales s’affichent pour les éléments impliqués afin que l’utilisateur puisse sélectionner celui qui convient.In this mode voice tip labels will be shown for the elements involved so that the user can select the right one. L’utilisateur peut annuler le mode de désambiguation en disant « annuler ».The user can cancel out of disambiguation mode by saying "cancel".

Par exemple :For example:

  • En mode d’écoute active, avant toute ambiguïté ; l’utilisateur dit « AM I ambigu » :In Active Listening Mode, before disambiguation; user says, "Am I Ambiguous":

    Capture d’écran du mode d’écoute actif avec l’option maintenant vous pouvez indiquer ce que vous voyez s’afficher et aucune étiquette sur les boutons.

  • Les deux boutons correspondent ; désambiguation démarrée :Both buttons matched; disambiguation started:

    Capture d’écran du mode d’écoute actif avec l’option que vous souhaitez afficher et les étiquettes élément 1 et élément 2 sur les boutons.

  • Indication de l’action de clic lorsque l’option « Sélectionner 2 » a été choisie :Showing click action when "Select 2" was chosen:

    Capture d’écran du mode d’écoute actif avec l’option maintenant vous pouvez indiquer ce que vous voyez s’afficher et l’étiquette est ambiguë sur le premier bouton.

Exemple d’interface utilisateurSample UI

Voici un exemple d’interface utilisateur XAML, qui définit le AutomationProperties.Name de différentes manières :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>

L’exemple ci-dessus présente l’interface utilisateur, ainsi que les étiquettes vocales.Using the above sample here is what the UI will look like with and without voice tip labels.

  • En mode d’écoute active, sans étiquettes affichées :In Active Listening Mode, without labels shown:

    Capture d’écran du mode d’écoute actif avec l’option pour afficher les étiquettes, disons afficher les étiquettes affichées et aucune étiquette affichée.

  • En mode d’écoute active, après que l’utilisateur a dit « afficher les étiquettes » :In Active Listening Mode, after user says "show labels":

    Capture d’écran du mode d’écoute actif avec l’option si vous avez terminé, par exemple l’option arrêter l’écoute affichée et les étiquettes affichées sur les contrôles U I.

Dans le cas de button1 , XAML remplit automatiquement la AutomationProperties.Name propriété à l’aide du texte du contenu textuel visible du contrôle.In the case of button1, XAML auto populates the AutomationProperties.Name property using text from the control’s visible text content. C’est pour cette raison qu’il existe une étiquette de Conseil vocal, bien qu’il n’y ait pas de AutomationProperties.Name jeu explicite.This is why there is a voice tip label even though there isn't an explicit AutomationProperties.Name set.

Avec button2 , nous définissons explicitement le AutomationProperties.Name sur une valeur autre que le texte du contrôle.With button2, we explicitly set the AutomationProperties.Name to something other than the text of the control.

Avec comboBox , nous avons utilisé la LabeledBy propriété pour faire référence à la label1 source de l’automatisation Name , et dans label1 nous définissons AutomationProperties.Name sur une expression plus naturelle que celle qui est affichée à l’écran (« jour de la semaine » au lieu de « sélectionner le jour de la semaine »).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”).

Enfin, avec button3 , le système VES récupère le du Name premier élément enfant, car il button3 n’a pas de AutomationProperties.Name jeu.Finally, with button3, VES grabs the Name from the first child element since button3 itself does not have an AutomationProperties.Name set.

Voir aussiSee also