FrameworkElement.Loaded Ereignis

Definition

Tritt auf, wenn ein FrameworkElement erstellt und der Objektstruktur hinzugefügt wurde und für die Interaktion bereit ist.

// 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"/>
 

Ereignistyp

Beispiele

Handler für Loaded und Unloaded werden automatisch an jede Seite angefügt, die die NavigationHelper -Klasse aus den Projektvorlagen zur Unterstützung verwendet. Die Ereignisverdrahtung erfolgt im Konstruktor. Der Handler wird mithilfe eines Lambdas geschrieben und fügt andere Ereignishandler an, damit die Seitennavigation Maus- oder Tastaturereignisse verwenden kann.

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;
    }
};

Das Loaded Ereignis ist ein guter Zeitpunkt, um dekorative Animationen zu starten, die nicht an Designanimationen oder andere Trigger gebunden sind. In diesem Beispiel wird gezeigt, wie eine PointAnimation in XAML ausgelöst wird, indem ein Loaded Handler mit einer Methode verbunden wird, die Begin für ein Animations-Storyboard aufruft.

<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();
}

Hinweise

Obwohl dieses Ereignis den RoutedEventHandler-Delegat und RoutedEventArgs als Ereignisdaten verwendet, ist das Ereignis kein routingfähiges Ereignis. Sie kann nur für das Element behandelt werden, das das Ereignis (also den Absender) hat. OriginalSource in Ereignisdaten für dieses Ereignis ist immer null.

Geladene Und Objektlebensdauer

In der Windows App SDK Implementierung tritt das Loaded Ereignis garantiert auf, nachdem eine Steuerelementvorlage angewendet wurde, und Sie können Verweise auf Objekte abrufen, die durch Anwenden der XAML-Vorlage erstellt werden.

Das Loaded Ereignis kann als Punkt verwendet werden, um Ereignishandler für Elemente zu verknüpfen, die aus einer Vorlage stammen, oder um Logik aufzurufen, die auf dem Vorhandensein untergeordneter Elemente basiert, die das Ergebnis einer angewendeten Vorlage sind. Loaded ist das bevorzugte Objektlebensdauerereignis zum Bearbeiten von Elementstrukturstrukturen mit Ihrem App-Code vor der Anzeige von XAML-Steuerelementen für Ihre Benutzeroberfläche. Es empfiehlt sich auch, die VisualStateManager.GoToState-Methode über einen geladenen Handler aufzurufen, um einen anfänglichen Ansichtszustand festzulegen, der in der Vorlage definiert ist, wenn kein anderes Ereignis im anfänglichen Layout auftritt (SizeChanged tritt beim anfänglichen Layout auf).

Das Timing von Loaded in der Windows App SDK Implementierung ähnelt dem Zeitpunkt in der WPF-Implementierung (Windows Presentation Foundation). Im Gegensatz dazu hatte die Microsoft Silverlight-Implementierung ein Zeitsteuerungsproblem, bei dem Sie sich nicht darauf verlassen konnten, dass die Vorlage geladen wurde, wenn Loaded sie aufgetreten ist. Wenn Sie XAML oder CodeBehind aus diesen XAML-Frameworks migrieren, sollten Sie die Aktionen in einem Loaded Handler so anpassen, dass sie für die Vorlagenladezeit der Windows App SDK Implementierung geeignet sind.

Um auf die Elemente zuzugreifen, die aus einer angewendeten Vorlage stammen, können Sie die statischen VisualTreeHelper-Methoden verwenden und durch untergeordnete Elemente nach Index navigieren. Alternativ können Sie die FindName-Methode für das Stammelement des vorlagenbasierten Inhalts aufrufen, um nach einem bestimmten Teil der Vorlage mit einem angegebenen x:Name-Attributwert zu suchen. Beachten Sie, dass Sie FindName im Vorlagenstamm und nicht im Steuerelement selbst aufrufen müssen, da jedes Mal ein XAML-Namescope erstellt wird, wenn Objekte von einer Vorlage erstellt werden, die für diese Vorlage spezifisch ist (weitere Informationen finden Sie unter XAML-Namescopes). Um zum Vorlagenstamm zu gelangen, verwenden Sie VisualTreeHelper.GetChild(target,0) wo target das Objekt ist, in dem die Vorlage angewendet wird. Sobald Sie diesen Stamm erhalten haben, können Sie zu den benannten Teilen gelangen.

Wenn Sie von einem vorhandenen Steuerelement ableiten, können Sie OnApplyTemplate überschreiben, um das Verhalten zum Teil des Standardklassenverhaltens zu machen, anstatt die Behandlung Loaded auf instance Basis auszuführen. OnApplyTemplate ist speziell als Rückruf für diese Situation gedacht, in der Sie über eine Struktur von Objekten aus der angewendeten Vorlage verfügen und nun die Visuals untersuchen oder anpassen möchten. Dies ist ein wichtiger Teil des Definierens des Verhaltens für ein benutzerdefiniertes Steuerelement, einschließlich Aktionen wie dem Deklarieren der startenden visuellen Zustände und der Verdrahtungsklassenhandler, die nicht mithilfe des On-Ereignis-Außerkraftsetzungsmusters definiert werden können. Ein Unterschied besteht darin, dass Sie im OnApplyTemplate-BereichGetTemplateChild verwenden sollten, um benannte Teile anstelle von FindName zu finden.

LayoutUpdated ist ein verwandtes Ereignis. Das LayoutUpdated-Ereignis ist das letzte Objektlebensdauerereignis in der Sequenz des Aktivierens eines Steuerelements und tritt nach auf Loaded. LayoutUpdated wird jedoch für Objekte ausgelöst, die an einer Layoutänderung beteiligt sind, nicht nur für aufeinander folgende übergeordnete Elemente in der Struktur. Mehrere Objekte auf einer Benutzeroberfläche können LayoutUpdated gleichzeitig auslösen. Layoutänderungen erfolgen aus einer Vielzahl von Gründen, z. B. wenn der Benutzer den Ansichtszustand oder die Bildschirmauflösung ändert oder die programmgesteuerte Größenänderung anderer Elemente in der gleichen Benutzeroberfläche oder im gleichen Layoutcontainer. Aus diesem Grund Loaded ist in der Regel eine bessere Wahl für die Ausführung von Code, der mit einem anfänglichen Layout oder einer angewendeten Vorlage funktioniert.

Verwenden Sie für App-Code, der die Navigation zwischen Seiten verwendet, page.OnNavigatedTo nicht zur Elementbearbeitung oder Zustandsänderung von Steuerelementen auf der Zielseite. Diese virtuelle Methode wird aufgerufen, bevor die Vorlage geladen wird, sodass Elemente aus Vorlagen noch nicht verfügbar sind. Fügen Sie stattdessen einen Loaded Ereignishandler am Stammverzeichnis des neu geladenen Seiteninhalts an, und führen Sie alle Elementbearbeitungen, Zustandsänderungen, Ereignisverdrahtung usw. im Loaded Ereignishandler aus.

Gilt für:

Weitere Informationen