FrameworkElement.Loaded É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 lorsqu’un FrameworkElement a été construit et ajouté à l’arborescence d’objets et est prêt à l’interaction.
// Register
event_token Loaded(RoutedEventHandler const& handler) const;
// Revoke with event_token
void Loaded(event_token const* cookie) const;
// Revoke with event_revoker
FrameworkElement::Loaded_revoker Loaded(auto_revoke_t, RoutedEventHandler const& handler) const;
public event RoutedEventHandler Loaded;
function onLoaded(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("loaded", onLoaded);
frameworkElement.removeEventListener("loaded", onLoaded);
- or -
frameworkElement.onloaded = onLoaded;
Public Custom Event Loaded As RoutedEventHandler
<frameworkElement Loaded="eventhandler"/>
Type d’événement
Exemples
Les gestionnaires pour Loaded et déchargement sont automatiquement attachés à n’importe quelle page qui utilise la NavigationHelper classe à partir des modèles de projet pour la prise en charge. Le câblage des événements est effectué dans le constructeur. Le gestionnaire est écrit à l’aide d’une expression lambda et attache d’autres gestionnaires d’événements afin que la navigation de page puisse utiliser des événements de souris ou de clavier.
this.Page.Loaded += (sender, e) =>
{
// Keyboard and mouse navigation only apply when occupying the entire window
if (this.Page.ActualHeight == Window.Current.Bounds.Height &&
this.Page.ActualWidth == Window.Current.Bounds.Width)
{
// Listen to the window directly so focus isn't required
Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated +=
CoreDispatcher_AcceleratorKeyActivated;
Window.Current.CoreWindow.PointerPressed +=
this.CoreWindow_PointerPressed;
}
};
L’événement Loaded est un bon moment pour démarrer des animations décoratives qui ne sont pas liées aux animations de thème ou à d’autres déclencheurs. Cet exemple montre comment déclencher un PointAnimation en XAML en connectant un Loaded gestionnaire à une méthode qui appelle Begin sur un storyboard d’animation.
<Canvas Width="450" Height="350">
<Canvas.Resources>
<Storyboard x:Name="myStoryboard">
<!-- Animate the center point of the ellipse from 100 X, 300 Y
to 400 X, 100 Y over 5 seconds. -->
<PointAnimation
Storyboard.TargetProperty="Center"
Storyboard.TargetName="MyAnimatedEllipseGeometry"
Duration="0:0:5"
From="100,300"
To="400,100"
RepeatBehavior="Forever" EnableDependentAnimation="True"/>
</Storyboard>
</Canvas.Resources>
<Path Fill="Blue" Loaded="Start_Animation">
<Path.Data>
<!-- Describes an ellipse. -->
<EllipseGeometry x:Name="MyAnimatedEllipseGeometry"
Center="200,100" RadiusX="15" RadiusY="15" />
</Path.Data>
</Path>
</Canvas>
// Start the animation when the object loads
void SampleApp::Page::Start_Animation(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
myStoryboard->Begin();
}
// Start the animation when the object loads
private void Start_Animation(object sender, RoutedEventArgs e)
{
myStoryboard.Begin();
}
Remarques
Bien que cet événement utilise le délégué RoutedEventHandler et RoutedEventArgs comme données d’événement, l’événement n’est pas un événement routé. 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 pour cet événement est toujours null.
Durée de vie du chargement et de l’objet
Dans l’implémentation SDK d'application Windows, l’événement Loaded est garanti après l’application d’un modèle de contrôle et vous pouvez obtenir des références aux objets créés en appliquant le modèle XAML.
L’événement Loaded peut être utilisé comme point pour raccorder des gestionnaires d’événements sur des éléments provenant d’un modèle, ou pour appeler une logique qui s’appuie sur l’existence d’éléments enfants qui sont le résultat d’un modèle appliqué. Le chargement est l’événement de durée de vie d’objet préféré pour manipuler des structures d’arborescences d’éléments avec le code de votre application avant l’affichage des contrôles XAML pour votre interface utilisateur. Il est également approprié d’appeler la méthode VisualStateManager.GoToState à partir d’un gestionnaire chargé afin de définir un état d’affichage initial défini dans le modèle, s’il n’existe aucun autre événement qui se produit également sur la disposition initiale (SizeChanged se produit sur la disposition initiale).
Le minutage de Loaded l’implémentation de SDK d'application Windows est similaire à celui de l’implémentation Windows Presentation Foundation (WPF). En revanche, l'implémentation Microsoft Silverlight a rencontré un problème de minutage où vous n'avez pas pu compter sur le modèle chargé lorsqu'il Loaded s'est produit. Si vous migrez XAML ou code-behind à partir de ces frameworks XAML, vous souhaiterez peut-être ajuster ce que vous faites dans un Loaded gestionnaire afin qu’il soit approprié pour le minutage de chargement du modèle de l’implémentation de SDK d'application Windows.
Pour accéder aux éléments provenant d’un modèle appliqué, vous pouvez utiliser les méthodes statiques VisualTreeHelper et parcourir les éléments enfants par index. Vous pouvez également appeler la méthode FindName sur l’élément racine du contenu basé sur un modèle pour rechercher une partie spécifique du modèle avec une valeur d’attribut x :Name donnée. Notez que vous devez appeler FindName sur la racine du modèle plutôt que sur le contrôle lui-même, car il existe un namescope XAML créé à tout moment où les objets sont créés par un modèle spécifique à ce modèle (pour plus d’informations, consultez les namescopes XAML). Pour accéder à la racine du modèle, utilisez VisualTreeHelper.GetChild(target,0)target l’emplacement où le modèle est appliqué. Une fois que vous avez cette racine, vous pouvez accéder aux parties nommées par la suite.
Si vous dérivez d’un contrôle existant, au lieu de gérer Loaded par instance, vous pouvez remplacer OnApplyTemplate pour faire partie du comportement de la classe par défaut.
OnApplyTemplate est spécifiquement conçu comme rappel pour cette situation, où vous disposez d’une arborescence d’objets à partir du modèle appliqué et que vous souhaitez maintenant examiner ou ajuster les visuels. Il s’agit d’un élément clé de la définition du comportement d’un contrôle personnalisé, notamment des actions telles que la déclaration des états visuels de départ et les gestionnaires de classes de câblage qui ne peuvent pas être définis à l’aide du modèle de remplacement d’événementActivé. Une différence est que par rapport à l’étendue OnApplyTemplate, vous devez utiliser GetTemplateChild pour rechercher des parties nommées plutôt que FindName.
LayoutUpdated est un événement associé. L’événement LayoutUpdated est le dernier événement « durée de vie de l’objet » dans la séquence d’activation d’un contrôle et se produit après Loaded. Toutefois, LayoutUpdated est déclenché pour les objets impliqués dans une modification de disposition, pas seulement les parents successifs dans l’arborescence. Plusieurs objets d’une interface utilisateur peuvent tous déclencher LayoutUpdated en même temps. Les modifications de disposition se produisent pour diverses raisons, telles que l’utilisateur modifiant l’état d’affichage ou la résolution d’écran, ou le redimensionnement programmatique d’autres éléments dans le même conteneur d’interface utilisateur ou de disposition. Pour cette raison, Loaded il est généralement préférable d’exécuter du code qui fonctionne avec une disposition initiale ou un modèle appliqué.
Pour le code d’application qui utilise la navigation entre les pages, n’utilisez pas Page.OnNavigatedTo pour la manipulation des éléments ou le changement d’état des contrôles sur la page de destination. Cette méthode virtuelle est appelée avant le chargement du modèle. Par conséquent, les éléments des modèles ne sont pas encore disponibles. Au lieu de cela, attachez un gestionnaire d’événements Loaded à la racine du contenu de la page nouvellement chargée et effectuez toutes les manipulations d’éléments, les modifications d’état, le câblage des événements, et ainsi de suite dans le Loaded gestionnaire d’événements.