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 événements de focus sur tous les éléments d’une application.
public ref class FocusManager sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
Exemples
Utilisez TryMoveFocus pour parcourir entre les éléments de l’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 l'UIElement événements routés au lieu d’é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 UIElement. Par exemple, les objets visuels « superposition » tels que fenêtre contextuelle, info-bulleou 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 marques 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, un Popup
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
se déclenchent dans l’arborescence visuelle (StackPanel1
, le Grid
et le Page
obtenir ces deux événements). Toutefois, seul StackPanel3
reçoit les événements suivants GettingFocus
et GotFocus
qui se déclenchent de Button5
(Grid
et Page
ne le font pas, car ils 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 focus logique n’a pas nécessairement le focus clavier, mais un élément avec le focus clavier a le focus logique.
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 pouvant recevoir le focus en fonction de l’étendue spécifiée. |
FindNextElement(FocusNavigationDirection, FindNextElementOptions) |
Récupère l’élément qui doit recevoir le focus en fonction du sens de navigation spécifié (ne peut pas être utilisé avec la navigation par onglet, voir les remarques). |
FindNextElement(FocusNavigationDirection) |
Récupère l’élément qui doit recevoir le focus en fonction du sens de navigation spécifié. |
FindNextFocusableElement(FocusNavigationDirection, Rect) |
Récupère l’élément qui doit recevoir le focus en fonction du sens de navigation et du rectangle d’indicateur spécifiés. |
FindNextFocusableElement(FocusNavigationDirection) |
Récupère l’élément qui doit recevoir le focus en fonction du sens de navigation spécifié. |
GetFocusedElement() |
Récupère l’élément de l’interface utilisateur qui a le focus. |
GetFocusedElement(XamlRoot) |
Récupère l’élément ciblé dans le conteneur d’île XAML. |
TryFocusAsync(DependencyObject, FocusState) |
Tente de définir de façon asynchrone le focus sur un élément lorsque l’application est initialisée. |
TryMoveFocus(FocusNavigationDirection, FindNextElementOptions) |
Tente de modifier le focus de l’élément avec le focus sur l’élément focusable suivant dans la direction spécifiée, à l’aide des options de navigation spécifiées. |
TryMoveFocus(FocusNavigationDirection) |
Tente de modifier le focus de l’élément avec le focus sur l’élément focusable suivant dans la direction spécifiée. |
TryMoveFocusAsync(FocusNavigationDirection, FindNextElementOptions) |
Tente de modifier de façon asynchrone le focus de l’élément actuel avec le focus sur l’élément focusable suivant dans la direction spécifiée et soumis aux options de navigation spécifiées. |
TryMoveFocusAsync(FocusNavigationDirection) |
Tente de façon asynchrone de modifier le focus de l’élément actuel avec le focus sur l’élément focusable suivant dans la direction spécifiée. |
Événements
GettingFocus |
Se produit avant qu’un élément ne reçoive réellement le focus. Cet événement est déclenché de façon synchrone pour vous assurer que le focus n’est pas déplacé pendant que l’événement est en cours de propagation. |
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. Le focus peut donc se déplacer avant la fin de l’opération. |
LosingFocus |
Se produit avant le déplacement du focus de l’élément actuel avec le focus sur l’élément cible. Cet événement est déclenché de façon synchrone pour vous assurer que le focus n’est pas déplacé pendant que l’événement est en cours de propagation. |
LostFocus |
Se produit lorsqu’un élément dans un élément conteneur (une étendue de focus) perd le focus. Cet événement est déclenché de façon asynchrone. Le focus peut donc se déplacer à nouveau avant la fin de l’opération. |