Bagikan melalui


FrameworkElement.Loaded Kejadian

Definisi

Terjadi ketika FrameworkElement telah dibangun dan ditambahkan ke pohon objek, dan siap untuk interaksi.

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

Jenis Acara

Contoh

Handler untuk Loaded dan Unloaded secara otomatis dilampirkan ke halaman mana pun yang menggunakan NavigationHelper kelas dari templat proyek untuk dukungan. Pengabelan peristiwa dilakukan di konstruktor. Handler ditulis menggunakan lambda, dan melampirkan penanganan aktivitas lainnya sehingga navigasi halaman dapat menggunakan peristiwa mouse atau keyboard.

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

Acara Loaded ini adalah waktu yang tepat untuk memulai animasi dekoratif yang tidak terikat dengan animasi tema atau pemicu lainnya. Contoh ini menunjukkan pemicu PointAnimation di XAML, dengan menghubungkan Loaded handler ke metode yang memanggil Mulai di Storyboard animasi.

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

Keterangan

Meskipun peristiwa ini menggunakan delegasi RoutedEventHandler dan RoutedEventArgs sebagai data peristiwa, peristiwa tersebut bukan peristiwa yang dirutekan. Ini hanya dapat ditangani pada elemen yang berasal dari peristiwa (dengan kata lain, pengirim). OriginalSource dalam data peristiwa untuk peristiwa ini selalu null.

Masa pakai yang dimuat dan objek

Dalam implementasi SDK Aplikasi Windows, Loaded peristiwa dijamin terjadi setelah templat kontrol diterapkan, dan Anda dapat memperoleh referensi ke objek yang dibuat dengan menerapkan templat XAML.

Kejadian ini Loaded dapat digunakan sebagai titik untuk menghubungkan penanganan aktivitas pada elemen yang berasal dari templat, atau untuk memanggil logika yang bergantung pada keberadaan elemen anak yang merupakan hasil dari templat yang diterapkan. Dimuat adalah peristiwa seumur hidup objek pilihan untuk memanipulasi struktur pohon elemen dengan kode aplikasi Anda sebelum tampilan kontrol XAML untuk UI Anda. Juga tepat untuk memanggil metode VisualStateManager.GoToState dari handler Yang dimuat untuk mengatur status tampilan awal yang ditentukan dalam templat, jika tidak ada peristiwa lain yang juga terjadi pada tata letak awal (SizeChanged memang terjadi pada tata letak awal).

Waktu Loaded dalam implementasi SDK Aplikasi Windows mirip dengan waktunya dalam implementasi Windows Presentation Foundation (WPF). Sebaliknya, implementasi Microsoft Silverlight memiliki masalah waktu di mana Anda tidak dapat mengandalkan templat yang dimuat saat Loaded terjadi. Jika Anda memigrasikan XAML atau code-behind dari kerangka kerja XAML ini, Anda mungkin ingin menyesuaikan apa yang Anda lakukan dalam Loaded handler agar sesuai untuk waktu pemuatan templat dari implementasi SDK Aplikasi Windows.

Untuk mengakses item yang berasal dari templat yang diterapkan, Anda dapat menggunakan metode statis VisualTreeHelper dan menavigasi elemen anak menurut indeks. Atau Anda dapat memanggil metode FindName pada elemen akar konten yang di-template untuk menemukan bagian tertentu dari templat dengan nilai atribut x:Name tertentu. Perhatikan bahwa Anda harus memanggil FindName pada akar templat daripada kontrol itu sendiri, karena ada namescope XAML yang dibuat setiap kali objek dibuat oleh templat yang khusus untuk templat tersebut (untuk informasi selengkapnya, lihat namescope XAML). Untuk masuk ke akar templat, gunakan VisualTreeHelper.GetChild(target,0) di mana target adalah objek tempat templat diterapkan. Setelah Anda mendapatkan akar itu, Anda dapat sampai ke bagian bernama setelahnya.

Jika Anda berasal dari kontrol yang ada, alih-alih menangani Loaded berdasarkan per instans, Anda dapat mengambil alih OnApplyTemplate untuk menjadikan perilaku sebagai bagian dari perilaku kelas default. OnApplyTemplate secara khusus dimaksudkan sebagai panggilan balik untuk situasi ini, di mana Anda memiliki pohon objek dari templat yang diterapkan dan sekarang Anda ingin memeriksa atau menyesuaikan visual. Ini adalah bagian penting dari mendefinisikan perilaku untuk kontrol kustom, termasuk tindakan seperti mendeklarasikan status visual awal dan penangan kelas kabel yang tidak dapat didefinisikan menggunakan pola penimpaan OnEvent . Salah satu perbedaannya adalah bahwa dari cakupan OnApplyTemplate Anda harus menggunakan GetTemplateChild untuk menemukan bagian bernama daripada FindName.

LayoutUpdated adalah peristiwa terkait. Peristiwa LayoutUpdated adalah peristiwa "masa pakai objek" terakhir dalam urutan mengaktifkan kontrol, dan terjadi setelah Loaded. Namun, LayoutUpdated diaktifkan untuk objek yang terlibat dalam perubahan tata letak, bukan hanya induk berturut-turut di pohon. Beberapa objek dalam UI mungkin semuanya menyalakan LayoutUpdated secara bersamaan. Perubahan tata letak terjadi karena berbagai alasan, seperti pengguna mengubah status tampilan atau resolusi layar, atau mengubah ukuran terprogram elemen lain dalam UI atau kontainer tata letak yang sama. Untuk alasan ini, Loaded biasanya merupakan pilihan yang lebih baik untuk menjalankan kode yang berfungsi dengan tata letak awal atau templat yang diterapkan.

Untuk kode aplikasi yang menggunakan navigasi antar halaman, jangan gunakan Page.OnNavigatedTo untuk manipulasi elemen atau perubahan status kontrol di halaman tujuan. Metode virtual ini dipanggil sebelum templat dimuat, sehingga elemen dari templat belum tersedia. Sebagai gantinya, lampirkan Loaded penanganan aktivitas di akar konten halaman yang baru dimuat, dan lakukan manipulasi elemen apa pun, perubahan status, kabel peristiwa, dan sebagainya di Loaded penanganan aktivitas.

Berlaku untuk

Lihat juga