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 entladen werden automatisch an jede Seite angefügt, die die Klasse aus den Projektvorlagen für die NavigationHelper Unterstützung verwendet. Die Ereignisverkabelung erfolgt im Konstruktor. Der Handler wird mit einer Lambda-Funktion geschrieben und fügt andere Ereignishandler an, sodass 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 verkabelt 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-Delegaten und RoutedEventArgs als Ereignisdaten verwendet, ist das Ereignis kein Routingereignis. Es kann nur für das Element behandelt werden, das das Ereignis (mit anderen Worten, den Absender) stammt. 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 das Vorhandensein untergeordneter Elemente basiert, die das Ergebnis einer angewendeten Vorlage sind. Loaded ist das bevorzugte Objektlebensdauerereignis zum Bearbeiten von Elementstrukturstrukturen mit Dem App-Code vor der Anzeige von XAML-Steuerelementen für die Benutzeroberfläche. Es ist auch geeignet, die VisualStateManager.GoToState-Methode aus einem Loaded-Handler aufzurufen, um einen anfänglichen Ansichtszustand festzulegen, der in der Vorlage definiert ist, wenn kein anderes Ereignis vorhanden ist, das auch für das anfängliche Layout auftritt (SizeChanged tritt beim anfänglichen Layout auf).

Der Zeitpunkt der Implementierung der Loaded Windows App SDK ähnelt dem Zeitpunkt der Implementierung von Windows Presentation Foundation (WPF). Im Gegensatz dazu hatte die Microsoft Silverlight-Implementierung ein Zeitplanungsproblem, bei dem Sie sich nicht darauf verlassen konnten, dass die Vorlage geladen wird, wenn Loaded ein Fehler aufgetreten ist. Wenn Sie XAML oder CodeBehind aus diesen XAML-Frameworks migrieren, sollten Sie die Aktionen in einem Loaded Handler anpassen, damit sie für die Anzeigedauer 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 untergeordnete Elemente nach Index navigieren. Alternativ können Sie die FindName-Methode für das Stammelement des vorlagenbasierten Inhalts aufrufen, um einen bestimmten Teil der Vorlage mit einem bestimmten x:Name-Attributwert zu finden. Beachten Sie, dass Sie FindName im Vorlagenstamm anstelle des Steuerelements selbst aufrufen müssen, da jedes Mal ein XAML-NameScope erstellt wird, der von einer Vorlage erstellt wird, die für diese Vorlage spezifisch ist (weitere Informationen finden Sie unter XAML-NameScopes). Verwenden Sie VisualTreeHelper.GetChild(target,0)target zum Abrufen des Vorlagenstamms das Objekt, auf das die Vorlage angewendet wird. Sobald Sie diesen Stamm haben, können Sie zu den benannten Teilen gelangen.

Wenn Sie von einem vorhandenen Steuerelement ableiten, können Sie OnApplyTemplate außer Kraft setzen, um Loaded den Verhaltensteil des Standardklassenverhaltens zu erstellen. 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 jetzt die visuellen Elemente untersuchen oder anpassen möchten. Dies ist ein wichtiger Bestandteil des Definierens des Verhaltens für ein benutzerdefiniertes Steuerelement, einschließlich Aktionen wie das Deklarieren der ersten visuellen Zustände und verkabelten Klassenhandler, die nicht mithilfe des On Event-Außerkraftsetzungsmusters definiert werden können. Ein Unterschied besteht darin, dass Sie vom OnApplyTemplate-BereichgetTemplateChild verwenden sollten, um benannte Teile anstelle von FindName zu suchen.

LayoutUpdated ist ein verwandtes Ereignis. Das LayoutUpdated-Ereignis ist das letzte "Objektlebensdauer"-Ereignis in der Sequenz der Aktivierung eines Steuerelements und tritt nach 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 in einer Benutzeroberfläche können layoutUpdated gleichzeitig auslösen. Layoutänderungen erfolgen aus verschiedenen Gründen, z. B. wenn der Benutzer den Ansichtszustand oder die Bildschirmauflösung ändert, oder die programmgesteuerte Größenänderung anderer Elemente in derselben Benutzeroberfläche oder in einem Layoutcontainer. Aus diesem Grund ist in der Regel eine bessere Wahl für das Ausführen von Code, Loaded 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 für elementmanipulation oder Zustandsänderung von Steuerelementen auf der Zielseite. Diese virtuelle Methode wird aufgerufen, bevor die Vorlage geladen wird, daher sind Elemente aus Vorlagen noch nicht verfügbar. Fügen Sie stattdessen einen Loaded Ereignishandler am Stamm des neu geladenen Seiteninhalts an, und führen Sie alle Elementänderungen, Zustandsänderungen, Ereignisverknüpfungen usw. im Loaded Ereignishandler aus.

Gilt für:

Weitere Informationen