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 pandangan?

Tampilan aplikasi adalah penggabungan 1:1 antara utas 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 statis ApplicationView.GetForCurrentView, yang mendapatkan instance ApplicationView yang terkait dengan utas CoreApplicationViewsaat ini.

Demikian juga, kerangka kerja XAML membungkus objek CoreWindow dalam objek Windows.UI.XAML.Window. Dalam aplikasi XAML, Anda biasanya berinteraksi dengan objek Jendela 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. Lihat kelas ViewLifetimeControl pada sampel MultipleViews untuk contohnya.

    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 Window Konten , lalu menavigasi Bingkai ke Halaman XAML tempat Anda menentukan konten aplikasi. Untuk informasi selengkapnya tentang bingkai dan halaman, lihat navigasi antar-rekan antara dua halaman .

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

    Terakhir, dapatkan Id dari tampilan baru yang Anda gunakan untuk menampilkannya nanti. Sekali lagi, pekerjaan ini ada di utas tampilan baru, jadi ApplicationView.GetForCurrentView mendapatkan Id dari 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 tampilan Id 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 bernilai benar. Anda tidak membuat tampilan ini; dibuat oleh aplikasi. Thread tampilan utama berfungsi sebagai manajer untuk aplikasi, dan semua event aktivasi aplikasi dikirimkan pada thread 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 dari 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 CoreApplication.Views koleksi. Biasanya, Anda membuat tampilan sekunder sebagai respons terhadap tindakan pengguna. Dalam beberapa kasus, sistem membuat tampilan sekunder untuk aplikasi Anda.

Nota

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, maka akan terjadi kesalahan.

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 yang sedang Anda alihkan dan meneruskan ID tampilan jendela yang Anda tuju.

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.