FocusManager Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Classe d’assistance qui permet la gestion globale des actions et des événements de focus sur tous les éléments d’une application.
public ref class FocusManager sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class FocusManager final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class FocusManager
Public NotInheritable Class FocusManager
- Héritage
- Attributs
Configuration requise pour Windows
Famille d’appareils |
Windows 10 (introduit dans 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduit dans v1.0)
|
Exemples
Utilisez TryMoveFocus pour parcourir les éléments d’interface utilisateur à l’aide des touches de direction.
private void Page_KeyUp(object sender, KeyRoutedEventArgs e)
{
if (e.Key == Windows.System.VirtualKey.Up)
{
// Mimic Shift+Tab when user hits up arrow key.
FocusManager.TryMoveFocus(FocusNavigationDirection.Previous);
}
else if (e.Key == Windows.System.VirtualKey.Down)
{
// Mimic Tab when user hits down arrow key.
FocusManager.TryMoveFocus(FocusNavigationDirection.Next);
}
}
Remarques
Nous vous recommandons d’utiliser les événements routés du focus UIElement au lieu des événements FocusManager dans la mesure du possible.
FocusManager est destiné aux scénarios avancés où des éléments spécifiques d’une application ne reçoivent pas d’événements en bulles d’un élément UIElement. Par exemple, les objets visuels « superposés » tels que Popup, Tooltip ou MenuFlyout qui apparaissent dans l’interface utilisateur de l’application, mais qui sont en fait leur propre étendue de focus et ne font pas partie de la hiérarchie de l’arborescence visuelle. Dans le cas d’une fenêtre contextuelle, cela se produit lorsque vous définissez par programmation IsOpen sur true et que le focus se déplace vers et hors de la fenêtre contextuelle.
Voici quelques balises de base pour illustrer l’exemple :
<Page …>
<Grid …>
<Popup …>
<StackPanel Name="StackPanel3" …>
<TextBlock Text="StackPanel3" />
<Button Content="Button5" …/>
</StackPanel>
</Popup>
<TextBlock Text="Grid" … />
<StackPanel Name="StackPanel1" …>
<TextBlock Text="StackPanel1" …/>
<Button Content="Button1" …/>
<Button Content="Button2" … />
</StackPanel>
<StackPanel Name="StackPanel2" …>
<TextBlock Text="StackPanel2" …/>
<Button Content="Button3" … />
<Button Content="Button4" … />
</StackPanel>
</Grid>
</Page>
Dans ce cas, une fenêtre contextuelle contient StackPanel3, qui, à son tour, contient Button5. Lorsque IsOpen est défini sur true et que le focus passe de Button1 à Button5, les événements LosingFocus et LostFocus s’affichent dans l’arborescence visuelle (StackPanel1, Grid et Page obtiennent ces deux événements). Toutefois, seul StackPanel3 reçoit les événements GettingFocus et GotFocus suivants qui s’affichent à partir de Button5 (Grid et Page ne sont pas dans une relation parent-enfant avec Popup).
Une application peut avoir plusieurs éléments avec le focus logique (en fonction du nombre d’étendues de focus). Toutefois, un seul élément de l’application peut avoir le focus clavier.
Il peut y avoir plusieurs éléments avec le focus logique, mais un seul élément avec le focus logique par étendue de focus. Un élément avec le focus logique n’a pas nécessairement le focus clavier, mais un élément avec le focus clavier a le focus logique.
Historique des versions
Version de Windows | Version du SDK | Valeur ajoutée |
---|---|---|
1703 | 15063 | FindFirstFocusableElement |
1703 | 15063 | FindLastFocusableElement |
1703 | 15063 | FindNextElement(FocusNavigationDirection) |
1703 | 15063 | FindNextElement(FocusNavigationDirection,FindNextElementOptions) |
1703 | 15063 | TryMoveFocus(FocusNavigationDirection,FindNextElementOptions) |
1803 | 17134 | TryFocusAsync |
1803 | 17134 | TryMoveFocusAsync(FocusNavigationDirection) |
1803 | 17134 | TryMoveFocusAsync(FocusNavigationDirection,FindNextElementOptions) |
1809 | 17763 | GettingFocus |
1809 | 17763 | GotFocus |
1809 | 17763 | LosingFocus |
1809 | 17763 | LostFocus |
1903 | 18362 | GetFocusedElement(XamlRoot) |
Méthodes
FindFirstFocusableElement(DependencyObject) |
Récupère le premier élément qui peut recevoir le focus en fonction de l’étendue spécifiée. |
FindLastFocusableElement(DependencyObject) |
Récupère le dernier élément qui peut recevoir le focus en fonction de l’étendue spécifiée. |
FindNextElement(FocusNavigationDirection) |
Récupère l’élément qui doit recevoir le focus en fonction de la direction de navigation spécifiée. |
FindNextElement(FocusNavigationDirection, FindNextElementOptions) |
Récupère l’élément qui doit recevoir le focus en fonction de la direction de navigation spécifiée (ne peut pas être utilisé avec la navigation par onglet, voir les remarques). |
FindNextFocusableElement(FocusNavigationDirection) |
Récupère l’élément qui doit recevoir le focus en fonction de la direction de navigation spécifiée. |
FindNextFocusableElement(FocusNavigationDirection, Rect) |
Récupère l’élément qui doit recevoir le focus en fonction de la direction de navigation et du rectangle d’indicateur spécifiés. |
GetFocusedElement() |
Récupère l’élément dans l’interface utilisateur qui a le focus. |
GetFocusedElement(XamlRoot) |
Récupère l’élément prioritaire dans le conteneur d’îlot Xaml. |
TryFocusAsync(DependencyObject, FocusState) |
Tente de façon asynchrone de définir le focus sur un élément lors de l’initialisation de l’application. |
TryMoveFocus(FocusNavigationDirection) |
Tente de faire passer le focus de l’élément avec le focus à l’élément suivant dans la direction spécifiée. |
TryMoveFocus(FocusNavigationDirection, FindNextElementOptions) |
Tente de remplacer le focus de l’élément avec focus sur l’élément suivant dans la direction spécifiée, à l’aide des options de navigation spécifiées. |
TryMoveFocusAsync(FocusNavigationDirection) |
Tente de façon asynchrone de modifier le focus de l’élément actif avec le focus sur l’élément suivant dans la direction spécifiée. |
TryMoveFocusAsync(FocusNavigationDirection, FindNextElementOptions) |
Tente de façon asynchrone de modifier le focus de l’élément actif avec le focus sur l’élément suivant dans la direction spécifiée et soumis aux options de navigation spécifiées. |
Événements
GettingFocus |
Se produit avant qu’un élément ne reçoive réellement le focus. Cet événement est déclenché de manière synchrone pour garantir que le focus n’est pas déplacé pendant que l’événement est en cours de bulle. |
GotFocus |
Se produit lorsqu’un élément au sein d’un élément conteneur (une étendue de focus) reçoit le focus. Cet événement est déclenché de façon asynchrone, de sorte que le focus peut se déplacer avant la fin du bullenement. |
LosingFocus |
Se produit avant que le focus ne passe de l’élément actuel avec focus à l’élément cible. Cet événement est déclenché de manière synchrone pour garantir que le focus n’est pas déplacé pendant que l’événement est en cours de bulle. |
LostFocus |
Se produit lorsqu’un élément au sein d’un élément conteneur (une étendue de focus) perd le focus. Cet événement est déclenché de manière asynchrone, de sorte que le focus peut se déplacer à nouveau avant que le bouillonnement ne soit terminé. |