Le TopLevel
Le TopLevel agit comme la racine visuelle et est la classe de base pour tous les contrôles de niveau supérieur, par exemple, Window. Il gère la planification de la mise en page, le style et le rendu, ainsi que le suivi de la taille du client. La plupart des services sont accessibles via le TopLevel.
Obtenir le TopLevel
Voici deux façons courantes d'accéder à une instance de TopLevel.
Utiliser TopLevel.GetTopLevel
Vous pouvez utiliser la méthode statique GetTopLevel de la classe TopLevel pour obtenir le contrôle de niveau supérieur qui contient le contrôle actuel.
var topLevel = TopLevel.GetTopLevel(control);
// Ici, vous pouvez référencer divers services comme le Presse-papiers ou le StorageProvider à partir de l'instance topLevel.
Cette méthode peut être utile si vous travaillez dans un contrôle utilisateur ou un composant de niveau inférieur et que vous avez besoin d'accéder aux services TopLevel.
Si TopLevel.GetTopLevel renvoie null, il est probable que le contrôle ne soit pas encore attaché à la racine. Pour vous assurer que le contrôle est attaché, vous devez gérer les événements Control.Loaded et Control.Unloaded et suivre le niveau supérieur actuel à partir de ces événements.
Utiliser la classe Window
Puisque la classe Window hérite de TopLevel, vous pouvez accéder directement aux services à partir d'une instance de Window :
var topLevel = window;
Cette méthode est généralement utilisée lorsque vous travaillez déjà dans le contexte d'une fenêtre, comme dans un ViewModel ou un gestionnaire d'événements au sein de la classe Window.
Propriétés courantes
ActualTransparencyLevel
Obtient le WindowTransparencyLevel atteint que la plateforme a pu fournir.
WindowTransparencyLevel ActualTransparencyLevel { get; }
ClientSize
Obtient la taille du client de la fenêtre.
Size ClientSize { get; }
Clipboard
Obtient l'implémentation du Clipboard de la plateforme.
IClipboard? Clipboard { get; }
FocusManager
Obtient le gestionnaire de focus de la racine.
IFocusManager? FocusManager { get; }
FrameSize
Obtient la taille totale du niveau supérieur y compris le cadre système s'il est présenté.
Size? FrameSize { get; }
InsetsManager
Obtient l'implémentation de l'InsetsManager de la plateforme.
IInsetsManager? InsetsManager { get; }
PlatformSettings
Représente un contrat pour accéder aux paramètres spécifiques à la plateforme de niveau supérieur.
IPlatformSettings? PlatformSettings { get; }
RendererDiagnostics
Obtient une valeur indiquant si le rendu doit dessiner des diagnostics spécifiques.
RendererDiagnostics RendererDiagnostics { get; }
RenderScaling
Obtient le facteur d'échelle à utiliser dans le rendu.
double RenderScaling { get; }
RequestedThemeVariant
Obtient ou définit la variante de thème UI utilisée par le contrôle (et ses éléments enfants) pour la détermination des ressources. Le thème UI que vous spécifiez avec ThemeVariant peut remplacer le ThemeVariant au niveau de l'application.
ThemeVariant? RequestedThemeVariant { get; set; }
StorageProvider
Service de stockage de système de fichiers utilisé pour les sélecteurs de fichiers et les signets.
IStorageProvider StorageProvider { get; }
TransparencyBackgroundFallback
Obtient ou définit le IBrush avec lequel la transparence se mélangera lorsque la transparence n'est pas prise en charge. Par défaut, il s'agit d'un pinceau blanc solide.
IBrush TransparencyBackgroundFallback { get; set; }
TransparencyLevelHint
Obtient ou définit le WindowTransparencyLevel que le TopLevel doit utiliser lorsque cela est possible. Accepte plusieurs valeurs qui sont appliquées dans un ordre de secours. Par exemple, avec "Mica, Blur", Mica sera appliqué uniquement sur les plateformes où cela est possible, et Blur sera utilisé sur le reste d'entre elles. La valeur par défaut est un tableau vide ou "None".
IReadOnlyList<WindowTransparencyLevel> TransparencyLevelHint { get; set; }
Événements Communs
BackRequested
Se produit lorsque le bouton de retour physique est pressé ou qu'une navigation vers l'arrière a été demandée.
event EventHandler<RoutedEventArgs> BackRequested { add; remove; }
Closed
Se déclenche lorsque la fenêtre est fermée.
event EventHandler Closed;
Opened
Se déclenche lorsque la fenêtre est ouverte.
event EventHandler Opened;
ScalingChanged
Se produit lorsque l'échelle du TopLevel change.
event EventHandler ScalingChanged;
Méthodes Communes
GetTopLevel
Obtient le TopLevel dans lequel le Visual donné est hébergé.
Paramètres
contrôle
Le visuel pour interroger son TopLevel
static TopLevel? GetTopLevel(Visual? visual)
RequestAnimationFrame
Met en file d'attente un rappel à appeler lors de la prochaine animation
void RequestAnimationFrame(Action<TimeSpan> action)
RequestPlatformInhibition
Demande qu'un PlatformInhibitionType soit inhibé. Le comportement reste inhibé jusqu'à ce que la valeur de retour soit disposée. L'ensemble disponible de PlatformInhibitionType dépend de la plateforme. Si un comportement est inhibé sur une plateforme où ce type n'est pas pris en charge, la demande n'aura aucun effet.
async Task<IDisposable> RequestPlatformInhibition(PlatformInhibitionType type, string reason)
TryGetPlatformHandle
Essaye d'obtenir le handle de la plateforme pour le contrôle dérivé de TopLevel.
IPlatformHandle? TryGetPlatformHandle()
Plus d'informations
Voir le code source sur GitHub TopLevel.cs