FrameworkElement.SizeChanged Événement
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.
Se produit lorsque la propriété ActualHeight ou ActualWidth change de valeur sur un FrameworkElement.
public:
virtual event SizeChangedEventHandler ^ SizeChanged;
// Register
event_token SizeChanged(SizeChangedEventHandler const& handler) const;
// Revoke with event_token
void SizeChanged(event_token const* cookie) const;
// Revoke with event_revoker
FrameworkElement::SizeChanged_revoker SizeChanged(auto_revoke_t, SizeChangedEventHandler const& handler) const;
public event SizeChangedEventHandler SizeChanged;
function onSizeChanged(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("sizechanged", onSizeChanged);
frameworkElement.removeEventListener("sizechanged", onSizeChanged);
- or -
frameworkElement.onsizechanged = onSizeChanged;
Public Custom Event SizeChanged As SizeChangedEventHandler
<frameworkElement SizeChanged="eventhandler"/>
Type d’événement
Remarques
SizeChanged se déclenche chaque fois que la taille ( ActualHeight ou ActualWidth) a changé sur l’objet, qui se trouve après la fin des passes Measure et Arrange .
Les données d’événement SizeChangedEventArgs pour l’événement SizeChanged fournissent deux propriétés : la valeur PreviousSize , représentant la taille de l’élément avant que la modification de disposition ne se produise, et la valeur NewSize , représentant la taille actuelle. Pour obtenir les informations de hauteur et de largeur, utilisez les valeurs Height et Width de la valeur de la structure Size pour ces propriétés SizeChangedEventArgs au sein de votre gestionnaire d’événements.
L’une des raisons de gérer l’événement SizeChanged est de voir si le ratio de ActualHeight et ActualWidth d’un élément a changé, en raison d’une nouvelle disposition. Par exemple, cela peut se produire si l’utilisateur a redimensionné la fenêtre de l’application et que la vue globale de l’application est désormais une vue étroite.
SizeChanged se produit lors de la disposition initiale d’éléments sur une page, lorsque l’application est activée pour la première fois, car les valeurs ActualHeight et ActualWidth pour les éléments d’interface utilisateur ne sont pas définies avant la mise en page. Ils obtiennent uniquement des valeurs pendant la passe de disposition initiale et, par conséquent, l’événement SizeChanged se produit. Par la suite, pendant la durée de vie d’une application, l’événement SizeChanged peut se déclencher à nouveau à partir d’un élément si les ActualHeight valeurs changent ActualWidth pour d’autres raisons. Cela comprend :
- Code qui ajuste spécifiquement la hauteur et la largeur de cet élément.
- Code qui modifie les propriétés de contrainte (comme MinHeight ou MaxHeight affectant ActualHeight).
- Valeurs de liaison de données actualisées ou de nouveaux styles appliqués qui affectent les propriétés liées à la disposition de FrameworkElement.
- Code qui ajuste les dimensions d’un conteneur comme un Panneau ou ListBox qui est le parent d’un élément. Cela déclenche souvent une passe de disposition. En raison des nouvelles conditions de disposition, un élément enfant contenu peut désormais avoir plus ou moins d’espace disponible, ce qui peut entraîner une nouvelle action ActualHeight et ActualWidth pour un élément.
- D’autres modifications qui se produisent au moment de l’exécution qui modifient l’espace de disposition même si elles ne modifient pas directement les propriétés de disposition FrameworkElement . Par exemple, une liste basée sur la liaison de données aux éléments peut être actualisée ou mise à jour, ce qui peut entraîner des modifications de taille dans les éléments, les contrôles d’éléments, les affichages de liste, et ainsi de suite. Ou un affichage de liste qui prend en charge le chargement incrémentiel peut extraire plus d’éléments et développer l’affichage de liste.
- L’utilisateur modifie la taille de la fenêtre de l’application (Window.SizeChanged se produit), ce qui affecte à son tour la taille de la page de niveau supérieur et peut-être les tailles dérivées de la disposition adaptative d’éléments de cette page qui utilisent la disposition ou
Stretchl’alignement automatiquement et qui ne spécifient pas de dimensions. - ApplicationView change ou DisplayInformation change qui affecte finalement les dimensions de la fenêtre et de la page, et potentiellement tous les éléments de l’interface utilisateur au sein de.
Il n’est pas strictement nécessaire d’appeler d’autres API qui influencent la disposition de l’objet actuel à partir d’un SizeChanged gestionnaire. Par exemple : définition de la hauteur ou de la largeur ; appel de InvalidateMeasure ou UpdateLayout ; appel de ApplyTemplate ; toute opération qui peut redimensionner les éléments enfants et invalider ainsi la disposition parente. Le moteur de disposition a une logique interne qui stabilise les valeurs avant qu’un objet déclenche à nouveau l’événement, de sorte que la logique est généralement suffisamment robuste pour éviter les conditions de bouclage. Toutefois, il est toujours possible de définir par inadvertance des boucles de dimensionnement ou de rendu qui peuvent bloquer votre application, ce qui lève généralement des exceptions telles que LayoutCycleException plutôt que réellement suspendues. Cela se produit si votre logique de gestionnaire combinée à la disposition environnante n’est pas capable d’atteindre un résultat final pour la taille de l’objet approprié.
Si la position de l’objet dans un conteneur parent change, mais pas la taille, SizeChanged elle ne se produit pas.
LayoutUpdated est un événement similaire, mais LayoutUpdated il est également déclenché pour les modifications de position. En outre, LayoutUpdated l’occurrence n’est pas limitée aux propriétés de disposition d’un objet spécifique, elle signale sur l’arborescence visuelle entière dans laquelle un objet est contenu.
LayoutUpdated vous informe que quelque chose dans l’arborescence visuelle globale qui contient l’objet a changé, mais que les spécificités de disposition (taille, position) de l’objet où le gestionnaire est attaché peuvent ne pas avoir changé.
Bien que cet événement utilise un délégué lié à RoutedEventHandler et une classe dérivée de RoutedEventArgs comme données d’événement, l’événement n’est pas vraiment un événement routé. Il ne fait pas bulle à travers une arborescence d’objets. Il peut être géré uniquement sur l’élément qui provient de l’événement (en d’autres termes, l’expéditeur).
OriginalSource dans les données d’événement de cet événement est toujours null, donc n’essayez pas d’utiliser le OriginalSource.