Loaded, événement

FrameworkElement.Loaded Event

Se produit lorsque FrameworkElement a été construit et ajouté à l'arborescence d'objets, et est prêt pour l'interaction.

Syntaxe


public event RoutedEventHandler Loaded


<frameworkElement Loaded="eventhandler"/>
 

Informations sur les événements

Délégué RoutedEventHandler

Remarques

Bien que cet événement utilise le délégué RoutedEventHandler et RoutedEventArgs en tant que données d'événement, l'événement n'est pas un événement routé. Il ne peut être géré que sur l'élément d'où provient l'événement (en d'autres termes, l'expéditeur). OriginalSource dans les données d'événements de cet événement a toujours la valeur null.

Durée de vie des objets Loaded et Control

Dans l'implémentation Windows Runtime, l'événement Loaded se produit toujours après l'application d'un modèle de contrôle, et vous pouvez obtenir les références aux objets créés en appliquant le modèle XAML. Ce fait n'a pas été documenté correctement dans les versions précédentes de la documentation.

L'événement Loaded peut être utilisé comme point pour connecter des gestionnaires d'événements sur les éléments qui proviennent d'un modèle, ou pour appeler la logique qui s'appuie sur l'existence d'éléments enfants générés par un modèle appliqué. Loaded est l'événement de durée de vie d'objet par défaut pour la manipulation des structures d'arborescence d'éléments à l'aide du code d'application avant l'affichage des contrôles XAML. Il est également nécessaire d'appeler la méthode VisualStateManager.GoToState à partir d'un gestionnaire Loaded afin de spécifier un état d'affichage initial qui est défini dans le modèle.

La synchronisation de l'événement Loaded dans l'implémentation Windows Runtime est semblable à sa synchronisation dans l'implémentation WPF (Windows Presentation Foundation). En revanche, l'implémentation Microsoft Silverlight présente un problème de synchronisation : vous ne pouvez pas compter sur le modèle en cours de chargement lorsque Loaded est déclenché. Si vous migrez XAML ou code-behind de ces infrastructures XAML, vous pouvez ajuster ce que vous effectuez dans un gestionnaire Loaded par rapport à la synchronisation du chargement des modèles de l'implémentation Windows Runtime.

Pour accéder aux éléments qui proviennent d'un modèle appliqué, vous pouvez utiliser les méthodes statiques VisualTreeHelper et parcourir les éléments enfants par index. Ou vous pouvez 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 à l'aide d'une valeur X:Name donnée. Notez que vous devez appeler FindName sur la racine du modèle au lieu du contrôle proprement dit, car une portée de nom XAML est créée chaque fois que des objets sont créés par un modèle spécifique à ce modèle (pour plus d'informations, consultez Portées de nom XAML). Pour accéder à la racine du modèle, utilisez VisualTreeHelper.GetChild(target,0)target représente l'objet où le modèle est appliqué.

Si vous dérivez d'un contrôle existant, au lieu de gérer Loaded par instance, remplacez OnApplyTemplate pour que le comportement fasse partie du comportement de classe par défaut. OnApplyTemplate est spécialement conçu comme rappel pour cette situation, où vous disposez d'une arborescence d'objets à partir du modèle appliqué et souhaitez examiner ou modifier les visuels. Il s'agit d'une partie fondamentale de la définition du comportement d'un contrôle personnalisé, par exemple la déclaration des états visuels initiaux et l'installation des gestionnaires de classes qui ne peuvent pas être définis à l'aide du modèle de substitution On*.

LayoutUpdated est un événement associé. L'événement LayoutUpdated est le dernier événement "object lifetime" de la séquence d'activation d'un contrôle et se produit après Loaded. Toutefois, LayoutUpdated est déclenché pour les objets qui sont impliqués dans une modification de mise en page, et non seulement pour les parents successifs dans l'arborescence. Plusieurs objets d'une interface utilisateur peuvent tous déclencher un LayoutUpdated en même temps. La disposition peut être modifiée pour diverses raisons, par exemple la modification de l'état d'affichage ou de la résolution d'écran par l'utilisateur, ou le redimensionnement par programmation d'autres éléments dans le même conteneur d'interface utilisateur ou de disposition. Pour cette raison, Loaded est généralement une meilleure option pour l'exécution du code qui fonctionne avec une mise en page initiale ou un modèle appliqué.

Pour l'application de code qui utilise la navigation entre les pages, n'utilisez pas Page.OnNavigatedTo pour la manipulation d'éléments ou la modification d'état des contrôles sur la page de destination. La méthode virtuelle OnNavigatedTo est appelée avant le chargement du modèle. Les éléments des modèles ne sont donc pas encore disponibles. À la place, attachez un gestionnaire d'événements Loaded à la racine du contenu de la nouvelle page chargée et exécutez les manipulations d'élément, les modifications d'état, les connexions d'événement, etc. dans le gestionnaire d'événements Loaded.

Exemples

Les gestionnaires de Loaded et Unloaded sont automatiquement liés aux pages qui utilisent le modèle de code commun LayoutAwarePage. Les actions de connexion s'effectuent dans le constructeur LayoutAwarePage. Le gestionnaire appelle les méthodes d'assistance qui mettent à jour l'état d'affichage, et joint d'autres gestionnaires d'événements afin que la navigation entre les pages peut utiliser les événements de souris ou du clavier.


this.Loaded += (sender, e) =>
{
    this.StartLayoutUpdates(sender, e);

    // Keyboard and mouse navigation only apply when occupying the entire window
    if (this.ActualHeight == Window.Current.Bounds.Height &&
        this.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 constitue le moment opportun pour démarrer les animations décoratives qui ne sont pas liées à des animations de thème ou d'autres déclencheurs. Cet exemple illustre le déclenchement d'un PointAnimation en XAML, en installant un gestionnaire Loaded pour une méthode qui appelle Begin sur une animation Storyboard.


<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
private void Start_Animation(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}


Configuration requise

Client minimal pris en charge

Windows 8

Serveur minimal pris en charge

Windows Server 2012

Espace de noms

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Métadonnées

Windows.winmd

Voir aussi

FrameworkElement
OnApplyTemplate
VisualTreeHelper
Control.Template
Vue d'ensemble des événements et des événements routés
Démarrage rapide : modèles de contrôle

 

 

Afficher:
© 2017 Microsoft