Xamarin.Forms dalam Proyek Asli Xamarin
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 ContentPage
memungkinkan halaman -turunan ditambahkan langsung ke aplikasi Xamarin.iOS, Xamarin.Android, dan UWP asli. Dibandingkan dengan memiliki proyek asli mengkonsumsi ContentPage
halaman -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.FormsContentPage
halaman -turunan dalam proyek asli adalah sebagai berikut:
- Xamarin.Forms Tambahkan paket NuGet ke proyek asli.
ContentPage
Tambahkan halaman -turunan, dan dependensi apa pun, ke proyek asli.- Panggil
Forms.Init
metode. - Buat instans
ContentPage
halaman -turunan dan konversikan ke jenis asli yang sesuai menggunakan salah satu metode ekstensi berikut:CreateViewController
untuk iOS,CreateSupportFragment
untuk Android, atauCreateFrameworkElement
untuk 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 ContentPage
halaman -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 ContentPage
halaman -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 ContentPage
halaman -turunan. Namun, tidak ada alasan mengapa proyek asli tidak dapat menggunakan ContentPage
halaman -turunan dari proyek pustaka .NET Standard atau Proyek Bersama.
Saat menggunakan Formulir Asli, Xamarin.Forms fitur seperti DependencyService
, , MessagingCenter
dan 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.Init
metode . - Objek baru
Xamarin.Forms.Application
dibuat, dan kamus sumber daya tingkat aplikasinya diatur keResourceDictionary
yang ditentukan dalam XAML. - Referensi ke
AppDelegate
kelas disimpan distatic
Instance
bidang . Ini untuk menyediakan mekanisme bagi kelas lain untuk memanggil metode yang ditentukan diAppDelegate
kelas . UIWindow
, yang merupakan kontainer utama untuk tampilan dalam aplikasi iOS asli, dibuat.- Properti
FolderPath
diinisialisasi ke jalur pada perangkat tempat data catatan akan disimpan. - Objek
NotesPage
dibuat, yang merupakan Xamarin.FormsContentPage
halaman -turunan yang ditentukan dalam XAML, dan induknya diatur ke objek yang dibuatXamarin.Forms.Application
sebelumnya. - Objek
NotesPage
dikonversi keUIViewController
menggunakanCreateViewController
metode ekstensi. - Properti
Title
dariUIViewController
diatur, yang akan ditampilkan padaUINavigationBar
. AppNavigationController
dibuat untuk mengelola navigasi hierarkis. Ini adalah kelas pengontrol navigasi kustom, yang berasal dariUINavigationController
. ObjekAppNavigationController
mengelola tumpukan pengontrol tampilan, dan yangUIViewController
diteruskan ke konstruktor akan disajikan pada awalnya ketikaAppNavigationController
dimuat.- Objek
AppNavigationController
diatur sebagai tingkatUIViewController
atas untukUIWindow
, danUIWindow
diatur sebagai jendela kunci untuk aplikasi dan dibuat terlihat. - Properti
Parent
NotesPage
objek diatur ke , untuk mencegah kebocorannull
memori.
Setelah metode dijalankan, UI yang ditentukan di Xamarin.FormsNotesPage
kelas akan ditampilkan, seperti yang FinishedLaunching
ditunjukkan pada cuplikan layar berikut:
Penting
Semua ContentPage
halaman -turunan dapat menggunakan sumber daya yang ditentukan dalam tingkat ResourceDictionary
aplikasi , 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 NavigateToNoteEntryPage
ContentPage
Xamarin.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.Init
metode . - Objek baru
Xamarin.Forms.Application
dibuat, dan kamus sumber daya tingkat aplikasinya diatur keResourceDictionary
yang ditentukan dalam XAML. - Referensi ke
MainActivity
kelas disimpan distatic
Instance
bidang . Ini untuk menyediakan mekanisme bagi kelas lain untuk memanggil metode yang ditentukan diMainActivity
kelas . - Konten
Activity
diatur dari sumber daya tata letak. Dalam aplikasi sampel, tata letak terdiri dariLinearLayout
yang berisiToolbar
, danFrameLayout
untuk bertindak sebagai kontainer fragmen. Toolbar
diambil dan diatur sebagai bilah tindakan untukActivity
, dan judul bilah tindakan diatur.- Properti
FolderPath
diinisialisasi ke jalur pada perangkat tempat data catatan akan disimpan. - Objek
NotesPage
dibuat, yang merupakan Xamarin.FormsContentPage
halaman -turunan yang ditentukan dalam XAML, dan induknya diatur ke objek yang dibuatXamarin.Forms.Application
sebelumnya. - Objek
NotesPage
dikonversi keFragment
menggunakanCreateSupportFragment
metode ekstensi. - Kelas
SupportFragmentManager
membuat dan menerapkan transaksi yang menggantikan instansFrameLayout
denganFragment
untukNotesPage
kelas . - Properti
Parent
NotesPage
objek diatur ke , untuk mencegah kebocorannull
memori.
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 ContentPage
halaman -turunan dapat menggunakan sumber daya yang ditentukan dalam tingkat ResourceDictionary
aplikasi , 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 NavigateToNoteEntryPage
ContentPage
Xamarin.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, ContentPage
halaman -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.Accent
akan diambil dariActivity
yang disebutForms.Init
metode . - Nilai
Xamarin.Forms.Application.Current
akan dikaitkan denganActivity
yang disebutForms.Init
metode .
Pilih file
Saat menyematkan halaman -turunan ContentPage
yang 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.FormsContentPage
halaman -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
MainPage
tidak dibangun saat pengguna menavigasi kembali ke halaman. - Referensi ke
MainPage
kelas disimpan distatic
Instance
bidang . Ini untuk menyediakan mekanisme bagi kelas lain untuk memanggil metode yang ditentukan diMainPage
kelas . - Properti
FolderPath
diinisialisasi ke jalur pada perangkat tempat data catatan akan disimpan. - Objek
NotesPage
dibuat, yang merupakan Xamarin.FormsContentPage
halaman -turunan yang ditentukan dalam XAML, dan induknya diatur ke objek yang dibuatXamarin.Forms.Application
sebelumnya. - Objek
NotesPage
dikonversi keFrameworkElement
menggunakanCreateFrameworkElement
metode ekstensi, lalu diatur sebagai kontenMainPage
kelas. - Properti
Parent
NotesPage
objek diatur ke , untuk mencegah kebocorannull
memori.
MainPage
Setelah konstruktor dijalankan, UI yang ditentukan dalam Xamarin.FormsNotesPage
kelas akan ditampilkan, seperti yang ditunjukkan pada cuplikan layar berikut:
Penting
Semua ContentPage
halaman -turunan dapat menggunakan sumber daya yang ditentukan dalam tingkat ResourceDictionary
aplikasi , 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 ContentPage
instans 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.