Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Biasanya, aplikasi Xamarin.Forms menyertakan satu atau beberapa halaman yang berasal dari ContentPage, dan halaman ini dibagikan oleh semua platform dalam proyek pustaka Standar .NET atau Proyek Bersama. Namun, Native Forms ContentPagememungkinkan halaman -turunan ditambahkan langsung ke aplikasi Xamarin.iOS, Xamarin.Android, dan UWP asli. Dibandingkan dengan memiliki proyek asli mengkonsumsi ContentPagehalaman -turunan dari proyek pustaka .NET Standard atau Proyek Bersama, keuntungan menambahkan halaman langsung ke proyek asli adalah bahwa halaman dapat diperluas dengan tampilan asli. Tampilan asli kemudian dapat dinamai di XAML dengan x:Name dan dirujuk dari kode di belakang. Untuk informasi selengkapnya tentang tampilan asli, lihat Tampilan Asli.
Proses untuk mengkonsumsi Xamarin.FormsContentPagehalaman -turunan dalam proyek asli adalah sebagai berikut:
- Xamarin.Forms Tambahkan paket NuGet ke proyek asli.
ContentPageTambahkan halaman -turunan, dan dependensi apa pun, ke proyek asli.- Panggil
Forms.Initmetode. - Buat instans
ContentPagehalaman -turunan dan konversikan ke jenis asli yang sesuai menggunakan salah satu metode ekstensi berikut:CreateViewControlleruntuk iOS,CreateSupportFragmentuntuk Android, atauCreateFrameworkElementuntuk UWP. - Navigasikan ke representasi jenis asli halaman
ContentPage-turunan menggunakan API navigasi asli.
Xamarin.Forms harus diinisialisasi dengan memanggil Forms.Init metode sebelum proyek asli dapat membangun ContentPagehalaman -turunan. Memilih kapan harus melakukan ini terutama tergantung pada kapan paling nyaman dalam alur aplikasi Anda - itu dapat dilakukan pada startup aplikasi, atau tepat sebelum ContentPagehalaman -turunan dibangun. Dalam artikel ini, dan aplikasi sampel yang menyertainya Forms.Init , metode ini dipanggil saat pengaktifan aplikasi.
Catatan
Solusi aplikasi sampel NativeForms tidak berisi proyek apa pun Xamarin.Forms . Sebaliknya, ini terdiri dari proyek Xamarin.iOS, proyek Xamarin.Android, dan proyek UWP. Setiap proyek adalah proyek asli yang menggunakan Formulir Asli untuk mengonsumsi ContentPagehalaman -turunan. Namun, tidak ada alasan mengapa proyek asli tidak dapat menggunakan ContentPagehalaman -turunan dari proyek pustaka .NET Standard atau Proyek Bersama.
Saat menggunakan Formulir Asli, Xamarin.Forms fitur seperti DependencyService, , MessagingCenterdan mesin pengikatan data, semuanya masih berfungsi. Namun, navigasi halaman harus dilakukan menggunakan API navigasi asli.
iOS
Di iOS, penimpaan FinishedLaunching AppDelegate di kelas biasanya merupakan tempat untuk melakukan tugas terkait startup aplikasi. Ini dipanggil setelah aplikasi diluncurkan, dan biasanya ditimpa untuk mengonfigurasi jendela utama dan melihat pengontrol. Contoh kode berikut menunjukkan AppDelegate kelas dalam aplikasi sampel:
[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
public static AppDelegate Instance;
UIWindow _window;
AppNavigationController _navigation;
public static string FolderPath { get; private set; }
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
Forms.Init();
// Create app-level resource dictionary.
Xamarin.Forms.Application.Current = new Xamarin.Forms.Application();
Xamarin.Forms.Application.Current.Resources = new MyDictionary();
Instance = this;
_window = new UIWindow(UIScreen.MainScreen.Bounds);
UINavigationBar.Appearance.SetTitleTextAttributes(new UITextAttributes
{
TextColor = UIColor.Black
});
FolderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
NotesPage notesPage = new NotesPage()
{
// Set the parent so that the app-level resource dictionary can be located.
Parent = Xamarin.Forms.Application.Current
};
UIViewController notesPageController = notesPage.CreateViewController();
notesPageController.Title = "Notes";
_navigation = new AppNavigationController(notesPageController);
_window.RootViewController = _navigation;
_window.MakeKeyAndVisible();
notesPage.Parent = null;
return true;
}
// ...
}
Metode FinishedLaunching ini melakukan tugas-tugas berikut:
- Xamarin.Forms diinisialisasi dengan memanggil
Forms.Initmetode . - Objek baru
Xamarin.Forms.Applicationdibuat, dan kamus sumber daya tingkat aplikasinya diatur keResourceDictionaryyang ditentukan dalam XAML. - Referensi ke
AppDelegatekelas disimpan distaticInstancebidang . Ini untuk menyediakan mekanisme bagi kelas lain untuk memanggil metode yang ditentukan diAppDelegatekelas . UIWindow, yang merupakan kontainer utama untuk tampilan dalam aplikasi iOS asli, dibuat.- Properti
FolderPathdiinisialisasi ke jalur pada perangkat tempat data catatan akan disimpan. - Objek
NotesPagedibuat, yang merupakan Xamarin.FormsContentPagehalaman -turunan yang ditentukan dalam XAML, dan induknya diatur ke objek yang dibuatXamarin.Forms.Applicationsebelumnya. - Objek
NotesPagedikonversi keUIViewControllermenggunakanCreateViewControllermetode ekstensi. - Properti
TitledariUIViewControllerdiatur, yang akan ditampilkan padaUINavigationBar. AppNavigationControllerdibuat untuk mengelola navigasi hierarkis. Ini adalah kelas pengontrol navigasi kustom, yang berasal dariUINavigationController. ObjekAppNavigationControllermengelola tumpukan pengontrol tampilan, dan yangUIViewControllerditeruskan ke konstruktor akan disajikan pada awalnya ketikaAppNavigationControllerdimuat.- Objek
AppNavigationControllerdiatur sebagai tingkatUIViewControlleratas untukUIWindow, danUIWindowdiatur sebagai jendela kunci untuk aplikasi dan dibuat terlihat. - Properti
ParentNotesPageobjek diatur ke , untuk mencegah kebocorannullmemori.
Setelah metode dijalankan, UI yang ditentukan di Xamarin.FormsNotesPage kelas akan ditampilkan, seperti yang FinishedLaunching ditunjukkan pada cuplikan layar berikut:
Penting
Semua ContentPagehalaman -turunan dapat menggunakan sumber daya yang ditentukan dalam tingkat ResourceDictionaryaplikasi , asalkan Parent properti halaman diatur ke Application objek .
Berinteraksi dengan UI, misalnya dengan mengetuk + Button, akan mengakibatkan penanganan aktivitas berikut dalam NotesPage eksekusi kode di belakang:
void OnNoteAddedClicked(object sender, EventArgs e)
{
AppDelegate.Instance.NavigateToNoteEntryPage(new Note());
}
Bidang static AppDelegate.Instance memungkinkan AppDelegate.NavigateToNoteEntryPage metode dipanggil, yang diperlihatkan dalam contoh kode berikut:
public void NavigateToNoteEntryPage(Note note)
{
NoteEntryPage noteEntryPage = new NoteEntryPage
{
BindingContext = note,
// Set the parent so that the app-level resource dictionary can be located.
Parent = Xamarin.Forms.Application.Current
};
var noteEntryViewController = noteEntryPage.CreateViewController();
noteEntryViewController.Title = "Note Entry";
_navigation.PushViewController(noteEntryViewController, true);
noteEntryPage.Parent = null;
}
Metode mengonversi NavigateToNoteEntryPageContentPageXamarin.Formshalaman -turunan menjadi UIViewController dengan CreateViewController metode ekstensi, dan mengatur Title properti dari UIViewController. kemudian UIViewController didorong ke AppNavigationController PushViewController dengan metode . Oleh karena itu, UI yang ditentukan dalam Xamarin.FormsNoteEntryPage kelas akan ditampilkan, seperti yang ditunjukkan pada cuplikan layar berikut:
NoteEntryPage Ketika ditampilkan, navigasi belakang akan memunculkan UIViewController untuk NoteEntryPage kelas dari AppNavigationController, mengembalikan pengguna ke UIViewController untuk NotesPage kelas . Namun, muncul UIViewController dari tumpukan navigasi asli iOS tidak secara otomatis membuang UIViewController objek yang terpasang Page dan . Oleh karena itu, AppNavigationController kelas mengambil alih PopViewController metode , untuk membuang pengontrol tampilan pada navigasi mundur:
public class AppNavigationController : UINavigationController
{
//...
public override UIViewController PopViewController(bool animated)
{
UIViewController topView = TopViewController;
if (topView != null)
{
// Dispose of ViewController on back navigation.
topView.Dispose();
}
return base.PopViewController(animated);
}
}
Penimpaan PopViewController Dispose memanggil metode pada UIViewController objek yang telah dimunculkan dari tumpukan navigasi asli iOS. Kegagalan untuk melakukan ini akan mengakibatkan UIViewController Page objek yang terpasang dan menjadi yatim piatu.
Penting
Objek yatim piatu tidak dapat dikumpulkan sampah, sehingga mengakibatkan kebocoran memori.
Android
Di Android, OnCreate penimpaan MainActivity di kelas biasanya merupakan tempat untuk melakukan tugas terkait startup aplikasi. Contoh kode berikut menunjukkan MainActivity kelas dalam aplikasi sampel:
public class MainActivity : AppCompatActivity
{
public static string FolderPath { get; private set; }
public static MainActivity Instance;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Forms.Init(this, bundle);
// Create app-level resource dictionary.
Xamarin.Forms.Application.Current = new Xamarin.Forms.Application();
Xamarin.Forms.Application.Current.Resources = new MyDictionary();
Instance = this;
SetContentView(Resource.Layout.Main);
var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
SupportActionBar.Title = "Notes";
FolderPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData));
NotesPage notesPage = new NotesPage()
{
// Set the parent so that the app-level resource dictionary can be located.
Parent = Xamarin.Forms.Application.Current
};
AndroidX.Fragment.App.Fragment notesPageFragment = notesPage.CreateSupportFragment(this);
SupportFragmentManager
.BeginTransaction()
.Replace(Resource.Id.fragment_frame_layout, mainPage)
.Commit();
//...
notesPage.Parent = null;
}
...
}
Metode OnCreate ini melakukan tugas-tugas berikut:
- Xamarin.Forms diinisialisasi dengan memanggil
Forms.Initmetode . - Objek baru
Xamarin.Forms.Applicationdibuat, dan kamus sumber daya tingkat aplikasinya diatur keResourceDictionaryyang ditentukan dalam XAML. - Referensi ke
MainActivitykelas disimpan distaticInstancebidang . Ini untuk menyediakan mekanisme bagi kelas lain untuk memanggil metode yang ditentukan diMainActivitykelas . - Konten
Activitydiatur dari sumber daya tata letak. Dalam aplikasi sampel, tata letak terdiri dariLinearLayoutyang berisiToolbar, danFrameLayoutuntuk bertindak sebagai kontainer fragmen. Toolbardiambil dan diatur sebagai bilah tindakan untukActivity, dan judul bilah tindakan diatur.- Properti
FolderPathdiinisialisasi ke jalur pada perangkat tempat data catatan akan disimpan. - Objek
NotesPagedibuat, yang merupakan Xamarin.FormsContentPagehalaman -turunan yang ditentukan dalam XAML, dan induknya diatur ke objek yang dibuatXamarin.Forms.Applicationsebelumnya. - Objek
NotesPagedikonversi keFragmentmenggunakanCreateSupportFragmentmetode ekstensi. - Kelas
SupportFragmentManagermembuat dan menerapkan transaksi yang menggantikan instansFrameLayoutdenganFragmentuntukNotesPagekelas . - Properti
ParentNotesPageobjek diatur ke , untuk mencegah kebocorannullmemori.
Untuk informasi selengkapnya tentang Fragmen, lihat Fragmen.
Setelah metode dijalankan, UI yang ditentukan di Xamarin.FormsNotesPage kelas akan ditampilkan, seperti yang OnCreate ditunjukkan pada cuplikan layar berikut:
Penting
Semua ContentPagehalaman -turunan dapat menggunakan sumber daya yang ditentukan dalam tingkat ResourceDictionaryaplikasi , asalkan Parent properti halaman diatur ke Application objek .
Berinteraksi dengan UI, misalnya dengan mengetuk + Button, akan mengakibatkan penanganan aktivitas berikut dalam NotesPage eksekusi kode di belakang:
void OnNoteAddedClicked(object sender, EventArgs e)
{
MainActivity.Instance.NavigateToNoteEntryPage(new Note());
}
Bidang static MainActivity.Instance memungkinkan MainActivity.NavigateToNoteEntryPage metode dipanggil, yang diperlihatkan dalam contoh kode berikut:
public void NavigateToNoteEntryPage(Note note)
{
NoteEntryPage noteEntryPage = new NoteEntryPage
{
BindingContext = note,
// Set the parent so that the app-level resource dictionary can be located.
Parent = Xamarin.Forms.Application.Current
};
AndroidX.Fragment.App.Fragment noteEntryFragment = noteEntryPage.CreateSupportFragment(this);
SupportFragmentManager
.BeginTransaction()
.AddToBackStack(null)
.Replace(Resource.Id.fragment_frame_layout, noteEntryFragment)
.Commit();
noteEntryPage.Parent = null;
}
Metode mengonversi NavigateToNoteEntryPageContentPageXamarin.Formshalaman -turunan menjadi Fragment dengan CreateSupportFragment metode ekstensi, dan menambahkan Fragment ke tumpukan kembali fragmen. Oleh karena itu, UI yang ditentukan dalam Xamarin.FormsNoteEntryPage akan ditampilkan, seperti yang ditunjukkan pada cuplikan layar berikut:
NoteEntryPage Saat ditampilkan, mengetuk panah belakang akan memunculkan Fragment dari NoteEntryPage tumpukan belakang fragmen, mengembalikan pengguna ke Fragment kelas .NotesPage
Mengaktifkan kembali dukungan navigasi
Kelas SupportFragmentManager memiliki BackStackChanged peristiwa yang diaktifkan setiap kali konten tumpukan kembali fragmen berubah. Metode OnCreate di MainActivity kelas berisi penanganan aktivitas anonim untuk peristiwa ini:
SupportFragmentManager.BackStackChanged += (sender, e) =>
{
bool hasBack = SupportFragmentManager.BackStackEntryCount > 0;
SupportActionBar.SetHomeButtonEnabled(hasBack);
SupportActionBar.SetDisplayHomeAsUpEnabled(hasBack);
SupportActionBar.Title = hasBack ? "Note Entry" : "Notes";
};
Penanganan aktivitas ini menampilkan tombol kembali pada bilah tindakan asalkan ada satu atau beberapa Fragment instans pada tumpukan kembali fragmen. Respons untuk mengetuk tombol kembali ditangani oleh penimpaan OnOptionsItemSelected :
public override bool OnOptionsItemSelected(Android.Views.IMenuItem item)
{
if (item.ItemId == global::Android.Resource.Id.Home && SupportFragmentManager.BackStackEntryCount > 0)
{
SupportFragmentManager.PopBackStack();
return true;
}
return base.OnOptionsItemSelected(item);
}
Penimpaan OnOptionsItemSelected dipanggil setiap kali item di menu opsi dipilih. Implementasi ini memunculkan fragmen saat ini dari tumpukan kembali fragmen, asalkan tombol kembali telah dipilih dan ada satu atau beberapa Fragment instans pada tumpukan belakang fragmen.
Beberapa aktivitas
Ketika aplikasi terdiri dari beberapa aktivitas, ContentPagehalaman -turunan dapat disematkan ke dalam setiap aktivitas. Dalam skenario ini, Forms.Init metode perlu dipanggil hanya dalam OnCreate penimpaan yang pertama Activity yang menyematkan Xamarin.FormsContentPage. Namun, ini memiliki dampak berikut:
- Nilai
Xamarin.Forms.Color.Accentakan diambil dariActivityyang disebutForms.Initmetode . - Nilai
Xamarin.Forms.Application.Currentakan dikaitkan denganActivityyang disebutForms.Initmetode .
Pilih file
Saat menyematkan halaman -turunan ContentPageyang menggunakan WebView yang perlu mendukung tombol HTML "Pilih File", Activity harus mengambil alih OnActivityResult metode:
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
ActivityResultCallbackRegistry.InvokeCallback(requestCode, resultCode, data);
}
UWP
Pada UWP, kelas asli App biasanya merupakan tempat untuk melakukan tugas terkait startup aplikasi. Xamarin.Forms biasanya diinisialisasi, dalam Xamarin.Forms aplikasi UWP, dalam OnLaunched penimpaan di kelas asli App , untuk meneruskan LaunchActivatedEventArgs argumen ke Forms.Init metode . Untuk alasan ini, aplikasi UWP asli yang mengonsumsi Xamarin.FormsContentPagehalaman -turunan dapat dengan mudah memanggil Forms.Init metode dari App.OnLaunched metode :
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
// ...
Xamarin.Forms.Forms.Init(e);
// Create app-level resource dictionary.
Xamarin.Forms.Application.Current = new Xamarin.Forms.Application();
Xamarin.Forms.Application.Current.Resources = new MyDictionary();
// ...
}
Selain itu, metode ini OnLaunched juga dapat membuat kamus sumber daya tingkat aplikasi apa pun yang diperlukan oleh aplikasi.
Secara default, kelas asli App meluncurkan MainPage kelas sebagai halaman pertama aplikasi. Contoh kode berikut menunjukkan MainPage kelas dalam aplikasi sampel:
public sealed partial class MainPage : Page
{
NotesPage notesPage;
NoteEntryPage noteEntryPage;
public static MainPage Instance;
public static string FolderPath { get; private set; }
public MainPage()
{
this.NavigationCacheMode = NavigationCacheMode.Enabled;
Instance = this;
FolderPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData));
notesPage = new Notes.UWP.Views.NotesPage
{
// Set the parent so that the app-level resource dictionary can be located.
Parent = Xamarin.Forms.Application.Current
};
this.Content = notesPage.CreateFrameworkElement();
// ...
notesPage.Parent = null;
}
// ...
}
MainPage Konstruktor melakukan tugas-tugas berikut:
- Penembolokan diaktifkan untuk halaman, sehingga baru
MainPagetidak dibangun saat pengguna menavigasi kembali ke halaman. - Referensi ke
MainPagekelas disimpan distaticInstancebidang . Ini untuk menyediakan mekanisme bagi kelas lain untuk memanggil metode yang ditentukan diMainPagekelas . - Properti
FolderPathdiinisialisasi ke jalur pada perangkat tempat data catatan akan disimpan. - Objek
NotesPagedibuat, yang merupakan Xamarin.FormsContentPagehalaman -turunan yang ditentukan dalam XAML, dan induknya diatur ke objek yang dibuatXamarin.Forms.Applicationsebelumnya. - Objek
NotesPagedikonversi keFrameworkElementmenggunakanCreateFrameworkElementmetode ekstensi, lalu diatur sebagai kontenMainPagekelas. - Properti
ParentNotesPageobjek diatur ke , untuk mencegah kebocorannullmemori.
MainPage Setelah konstruktor dijalankan, UI yang ditentukan dalam Xamarin.FormsNotesPage kelas akan ditampilkan, seperti yang ditunjukkan pada cuplikan layar berikut:
Penting
Semua ContentPagehalaman -turunan dapat menggunakan sumber daya yang ditentukan dalam tingkat ResourceDictionaryaplikasi , asalkan Parent properti halaman diatur ke Application objek .
Berinteraksi dengan UI, misalnya dengan mengetuk + Button, akan mengakibatkan penanganan aktivitas berikut dalam NotesPage eksekusi kode di belakang:
void OnNoteAddedClicked(object sender, EventArgs e)
{
MainPage.Instance.NavigateToNoteEntryPage(new Note());
}
Bidang static MainPage.Instance memungkinkan MainPage.NavigateToNoteEntryPage metode dipanggil, yang diperlihatkan dalam contoh kode berikut:
public void NavigateToNoteEntryPage(Note note)
{
noteEntryPage = new Notes.UWP.Views.NoteEntryPage
{
BindingContext = note,
// Set the parent so that the app-level resource dictionary can be located.
Parent = Xamarin.Forms.Application.Current
};
this.Frame.Navigate(noteEntryPage);
noteEntryPage.Parent = null;
}
Navigasi di UWP biasanya dilakukan dengan Frame.Navigate metode , yang mengambil Page argumen. Xamarin.Formsmenentukan metode ekstensi yang mengambil ContentPageinstans Frame.Navigate halaman -turunan. Oleh karena itu, ketika NavigateToNoteEntryPage metode dijalankan, UI yang ditentukan dalam Xamarin.FormsNoteEntryPage akan ditampilkan, seperti yang ditunjukkan pada cuplikan layar berikut:
NoteEntryPage Saat ditampilkan, mengetuk panah belakang akan memunculkan FrameworkElement dari NoteEntryPage tumpukan belakang dalam aplikasi, mengembalikan pengguna ke FrameworkElement kelas .NotesPage
Mengaktifkan dukungan pengulangan ukuran halaman
Ketika jendela aplikasi UWP diubah ukurannya, konten juga harus diubah ukurannya Xamarin.Forms . Hal ini dilakukan dengan mendaftarkan penanganan aktivitas untuk peristiwa tersebut Loaded , di MainPage konstruktor:
public MainPage()
{
// ...
this.Loaded += OnMainPageLoaded;
// ...
}
Peristiwa diaktifkan Loaded ketika halaman ditata, dirender, dan siap untuk interaksi, dan menjalankan OnMainPageLoaded metode sebagai respons:
void OnMainPageLoaded(object sender, RoutedEventArgs e)
{
this.Frame.SizeChanged += (o, args) =>
{
if (noteEntryPage != null)
noteEntryPage.Layout(new Xamarin.Forms.Rectangle(0, 0, args.NewSize.Width, args.NewSize.Height));
else
notesPage.Layout(new Xamarin.Forms.Rectangle(0, 0, args.NewSize.Width, args.NewSize.Height));
};
}
Metode ini OnMainPageLoaded mendaftarkan penanganan aktivitas anonim untuk Frame.SizeChanged peristiwa, yang dinaikkan ketika ActualHeight atau ActualWidth properti berubah pada Frame. Sebagai respons, Xamarin.Forms konten untuk halaman aktif diubah ukurannya dengan memanggil Layout metode .
Mengaktifkan kembali dukungan navigasi
Pada UWP, aplikasi harus mengaktifkan navigasi balik untuk semua tombol kembali perangkat keras dan perangkat lunak, di berbagai faktor bentuk perangkat. Ini dapat dicapai dengan mendaftarkan penanganan aktivitas untuk peristiwa, BackRequested yang dapat dilakukan di MainPage konstruktor:
public MainPage()
{
// ...
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
}
Ketika aplikasi diluncurkan, GetForCurrentView metode mengambil objek yang SystemNavigationManager terkait dengan tampilan saat ini, lalu mendaftarkan penanganan aktivitas untuk peristiwa tersebut BackRequested . Aplikasi hanya menerima peristiwa ini jika ini adalah aplikasi latar depan, dan sebagai respons, memanggil penanganan OnBackRequested aktivitas:
void OnBackRequested(object sender, BackRequestedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame.CanGoBack)
{
e.Handled = true;
rootFrame.GoBack();
noteEntryPage = null;
}
}
Penanganan OnBackRequested aktivitas memanggil GoBack metode pada bingkai akar aplikasi dan mengatur BackRequestedEventArgs.Handled properti untuk true menandai peristiwa sebagai ditangani. Kegagalan untuk menandai peristiwa sebagai ditangani dapat mengakibatkan peristiwa diabaikan.
Aplikasi memilih apakah akan menampilkan tombol kembali pada bilah judul. Ini dicapai dengan mengatur AppViewBackButtonVisibility properti ke salah AppViewBackButtonVisibility satu nilai enumerasi, di App kelas :
void OnNavigated(object sender, NavigationEventArgs e)
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
((Frame)sender).CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed;
}
Penanganan OnNavigated aktivitas, yang dijalankan sebagai respons terhadap Navigated penembakan peristiwa, memperbarui visibilitas tombol kembali bilah judul saat navigasi halaman terjadi. Ini memastikan bahwa tombol kembali bilah judul terlihat jika tumpukan kembali dalam aplikasi tidak kosong, atau dihapus dari bilah judul jika tumpukan belakang dalam aplikasi kosong.
Untuk informasi selengkapnya tentang dukungan navigasi belakang di UWP, lihat Riwayat navigasi dan navigasi mundur untuk aplikasi UWP.





