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 chargés et déchargés sont automatiquement attachés à n’importe quelle page qui utilise la classe NavigationHelper des modèles de projet pour la prise en charge. Le câblage d’événements est effectué dans le constructeur. Le gestionnaire est écrit à l’aide d’un lambda et joint 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 à des animations de thème ou à d’autres déclencheurs. Cet exemple montre le déclenchement d’un PointAnimation en XAML, en connectant un gestionnaire Chargé à 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();
}
' Start the animation when the object loads
Private Sub Start_Animation(ByVal sender As Object, ByVal e As EventArgs)
    myStoryboard.Begin()
End Sub

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 à l’origine 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 Windows Runtime, 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 à des objets créés en appliquant le modèle XAML.

L’événement Loaded peut être utilisé comme point pour connecter 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 votre code d’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 qui est 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 Chargement dans l’implémentation Windows Runtime est similaire à son timing dans l’implémentation Windows Presentation Foundation (WPF). En revanche, l’implémentation de Microsoft Silverlight présente un problème de minutage où vous ne pouvez pas compter sur le modèle en cours de chargement lors du chargement. Si vous migrez XAML ou code-behind à partir de ces frameworks XAML, vous pouvez ajuster ce que vous faites dans un gestionnaire Chargé pour qu’il soit approprié pour le minutage de chargement du modèle de l’implémentation du 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. Vous pouvez également appeler la méthode FindName sur l’élément racine du contenu 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 un namescope XAML est créé chaque fois que des objets sont créés par un modèle spécifique à ce modèle (pour plus d’informations, consultez Namescopes XAML). 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 sur une base par instance, 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 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é, 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, à partir de 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 un changement 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 de l’écran par l’utilisateur, ou le redimensionnement par programme d’autres éléments dans le même conteneur d’interface utilisateur ou 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. La méthode virtuelle OnNavigatedTo 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, joignez 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 gestionnaire d’événements Loaded.

S’applique à

Voir aussi