FrameworkElement.Loaded Événement

Définition

Se produit lorsqu’un FrameworkElement a été construit et ajouté à l’arborescence d’objets et qu’il est prêt pour 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 Unloaded sont automatiquement attachés à toute page qui utilise la NavigationHelper classe des modèles de projet pour la prise en charge. Le câblage d’événement est effectué dans le constructeur. Le gestionnaire est écrit à l’aide d’un lambda et attache d’autres gestionnaires d’événements afin que la navigation sur les pages 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 le bon moment pour démarrer des animations décoratives qui ne sont pas liées à des animations de thème ou à d’autres déclencheurs. Cet exemple montre le déclenchement d’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 ne peut être géré que 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.

Charge et durée de vie 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é. Loaded est l’événement de durée de vie d’objet préféré pour la manipulation des 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 Loaded afin de définir un état d’affichage initial défini dans le modèle, s’il n’y a pas d’autre événement qui se produit également sur la disposition initiale (SizeChanged se produit sur la disposition initiale).

Le minutage de Loaded dans l’implémentation SDK d'application Windows est similaire à son minutage dans l’implémentation Windows Presentation Foundation (WPF). En revanche, l’implémentation de Microsoft Silverlight a rencontré un problème de minutage où vous ne pouviez pas vous appuyer sur le modèle en cours de chargement lorsqu’il Loaded se produisait. Si vous migrez xaml ou code-behind à partir de ces frameworks XAML, vous pouvez ajuster ce que vous faites dans un Loaded gestionnaire pour qu’il soit approprié pour le minutage de chargement du modèle de l’implémentation 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 à la racine du modèle plutôt que sur le contrôle lui-même, car il existe un namescope XAML créé chaque fois que des objets sont créés par un modèle spécifique à ce modèle (pour plus d’informations, voir Xaml namescopes). Pour accéder à la racine du modèle, utilisez VisualTreeHelper.GetChild(target,0)target est l’objet dans lequel 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 base, vous pouvez remplacer OnApplyTemplate pour que le comportement fasse partie du comportement de classe par défaut. OnApplyTemplate est spécifiquement conçu comme rappel pour cette situation, où vous avez une arborescence d’objets 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é, y compris des actions telles que la déclaration des états visuels de départ et le câblage des gestionnaires de classes qui ne peuvent pas être définis à l’aide du modèle de remplacement d’événementon. Une différence est que, dans 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 de « 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, et pas seulement pour 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 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 la même interface utilisateur ou le même conteneur de disposition. Pour cette raison, Loaded est généralement un meilleur choix pour 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 d’é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 les manipulations d’éléments, les changements d’état, le câblage d’événements, etc. dans le Loaded gestionnaire d’événements.

S’applique à

Voir aussi