Bagikan melalui


Tampilkan beberapa tampilan dengan ApplicationView

Bantu pengguna Anda menjadi lebih produktif dengan memungkinkan mereka melihat bagian independen aplikasi Anda di jendela terpisah. Saat Anda membuat beberapa jendela untuk aplikasi, setiap jendela bertindak secara independen. Bilah tugas memperlihatkan setiap jendela secara terpisah. Pengguna dapat memindahkan, mengubah ukuran, menampilkan, dan menyembunyikan jendela aplikasi secara independen dan dapat beralih di antara jendela aplikasi seolah-olah mereka adalah aplikasi terpisah. Setiap jendela beroperasi di utasnya sendiri.

API Penting: ApplicationViewSwitcher, CreateNewView

Apa itu tampilan?

Tampilan aplikasi adalah pemasangan utas 1:1 dan jendela yang digunakan aplikasi untuk menampilkan konten. Ini diwakili oleh objek Windows.ApplicationModel.Core.CoreApplicationView.

Tampilan dikelola oleh objek CoreApplication. Anda memanggil CoreApplication.CreateNewView untuk membuat objek CoreApplicationView. CoreApplicationView menyatukan CoreWindow dan CoreDispatcher (disimpan di properti CoreWindow dan Dispatcher). Anda dapat menganggap CoreApplicationView sebagai objek yang digunakan Windows Runtime untuk berinteraksi dengan sistem Windows inti.

Anda biasanya tidak bekerja langsung dengan CoreApplicationView. Sebagai gantinya, Windows Runtime menyediakan kelas ApplicationView di namespace Windows.UI.ViewManagement. Kelas ini menyediakan properti, metode, dan peristiwa yang Anda gunakan saat aplikasi berinteraksi dengan sistem windowing. Untuk bekerja dengan ApplicationView, panggil metode ApplicationView.GetForCurrentView statis, yang mendapatkan instans ApplicationView yang terkait dengan utas CoreApplicationView saat ini.

Demikian juga, kerangka kerja XAML membungkus objek CoreWindow dalam objek Windows.UI.XAML.Window. Dalam aplikasi XAML, Anda biasanya berinteraksi dengan objek Window daripada bekerja langsung dengan CoreWindow.

Perlihatkan tampilan baru

Meskipun setiap tata letak aplikasi unik, sebaiknya sertakan tombol "jendela baru" di lokasi yang dapat diprediksi, seperti sudut kanan atas konten yang dapat dibuka di jendela baru. Pertimbangkan juga untuk menyertakan opsi menu konteks untuk "Buka di jendela baru".

Mari kita lihat langkah-langkah untuk membuat tampilan baru. Di sini, tampilan baru diluncurkan sebagai respons terhadap klik tombol.

private async void Button_Click(object sender, RoutedEventArgs e)
{
    CoreApplicationView newView = CoreApplication.CreateNewView();
    int newViewId = 0;
    await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        Frame frame = new Frame();
        frame.Navigate(typeof(SecondaryPage), null);   
        Window.Current.Content = frame;
        // You have to activate the window in order to show it later.
        Window.Current.Activate();

        newViewId = ApplicationView.GetForCurrentView().Id;
    });
    bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
}

Untuk menampilkan tampilan baru

  1. Panggil CoreApplication.CreateNewView untuk membuat jendela dan utas baru untuk konten tampilan.

    CoreApplicationView newView = CoreApplication.CreateNewView();
    
  2. Lacak Id tampilan baru. Anda menggunakan ini untuk menampilkan tampilan nanti.

    Anda mungkin ingin mempertimbangkan untuk membangun beberapa infrastruktur ke dalam aplikasi Anda untuk membantu melacak tampilan yang Anda buat. ViewLifetimeControl Lihat kelas dalam sampel MultipleViews misalnya.

    int newViewId = 0;
    
  3. Pada utas baru, isi jendela.

    Anda menggunakan metode CoreDispatcher.RunAsync untuk menjadwalkan pekerjaan pada utas UI untuk tampilan baru. Anda menggunakan ekspresi lambda untuk meneruskan fungsi sebagai argumen ke metode RunAsync . Pekerjaan yang Anda lakukan dalam fungsi lambda terjadi pada utas tampilan baru.

    Di XAML, Anda biasanya menambahkan Bingkai ke properti Konten Jendela, lalu menavigasi Bingkai ke Halaman XAML tempat Anda menentukan konten aplikasi. Untuk informasi selengkapnya tentang bingkai dan halaman, lihat Navigasi peer-to-peer antara dua halaman.

    Setelah Jendela baru diisi, Anda harus memanggil metode Aktifkan Jendela untuk menampilkan Jendela nanti. Pekerjaan ini terjadi pada utas tampilan baru, sehingga Jendela baru diaktifkan.

    Terakhir, dapatkan Id tampilan baru yang Anda gunakan untuk menampilkan tampilan nanti. Sekali lagi, pekerjaan ini ada di utas tampilan baru, sehingga ApplicationView.GetForCurrentView mendapatkan Id tampilan baru.

    await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        Frame frame = new Frame();
        frame.Navigate(typeof(SecondaryPage), null);   
        Window.Current.Content = frame;
        // You have to activate the window in order to show it later.
        Window.Current.Activate();
    
        newViewId = ApplicationView.GetForCurrentView().Id;
    });
    
  4. Tampilkan tampilan baru dengan memanggil ApplicationViewSwitcher.TryShowAsStandaloneAsync.

    Setelah membuat tampilan baru, Anda dapat menampilkannya di jendela baru dengan memanggil metode ApplicationViewSwitcher.TryShowAsStandaloneAsync. Parameter viewId untuk metode ini adalah bilangan bulat yang secara unik mengidentifikasi setiap tampilan di aplikasi Anda. Anda mengambil Id tampilan dengan menggunakan properti ApplicationView.Id atau metode ApplicationView.GetApplicationViewIdForWindow.

    bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
    

Tampilan utama

Tampilan pertama yang dibuat saat aplikasi Anda dimulai disebut tampilan utama. Tampilan ini disimpan di properti CoreApplication.MainView, dan properti IsMain-nya benar. Anda tidak membuat tampilan ini; dibuat oleh aplikasi. Utas tampilan utama berfungsi sebagai manajer untuk aplikasi, dan semua peristiwa aktivasi aplikasi dikirimkan pada utas ini.

Jika tampilan sekunder terbuka, jendela tampilan utama dapat disembunyikan – misalnya, dengan mengklik tombol tutup (x) di bilah judul jendela - tetapi utasnya tetap aktif. Memanggil Tutup pada Jendela tampilan utama menyebabkan Terjadinya InvalidOperationException. (Gunakan Application.Exit untuk menutup aplikasi Anda.) Jika utas tampilan utama dihentikan, aplikasi akan ditutup.

Tampilan sekunder

Tampilan lain, termasuk semua tampilan yang Anda buat dengan memanggil CreateNewView di kode aplikasi Anda, adalah tampilan sekunder. Tampilan utama dan tampilan sekunder disimpan dalam koleksi CoreApplication.Views. Biasanya, Anda membuat tampilan sekunder sebagai respons terhadap tindakan pengguna. Dalam beberapa kasus, sistem membuat tampilan sekunder untuk aplikasi Anda.

Catatan

Anda dapat menggunakan fitur akses yang ditetapkan Windows untuk menjalankan aplikasi dalam mode kios. Saat Anda melakukan ini, sistem membuat tampilan sekunder untuk menyajikan UI aplikasi Anda di atas layar kunci. Tampilan sekunder yang dibuat aplikasi tidak diizinkan, jadi jika Anda mencoba menampilkan tampilan sekunder Anda sendiri dalam mode kios, pengecualian akan dilemparkan.

Beralih dari satu tampilan ke tampilan lainnya

Pertimbangkan untuk menyediakan cara bagi pengguna untuk menavigasi dari jendela sekunder kembali ke jendela induknya. Untuk melakukan ini, gunakan metode ApplicationViewSwitcher.SwitchAsync. Anda memanggil metode ini dari utas jendela tempat Anda beralih dan meneruskan ID tampilan jendela yang Anda alihkan.

await ApplicationViewSwitcher.SwitchAsync(viewIdToShow);

Saat Anda menggunakan SwitchAsync, Anda dapat memilih apakah Anda ingin menutup jendela awal dan menghapusnya dari taskbar dengan menentukan nilai ApplicationViewSwitchingOptions.