Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In genere, un'applicazione Xamarin.Forms include una o più pagine che derivano da ContentPagee queste pagine vengono condivise da tutte le piattaforme in un progetto di libreria .NET Standard o progetto condiviso. Tuttavia, Native Forms consente l'aggiunta ContentPagedi pagine derivate direttamente alle applicazioni Xamarin.iOS, Xamarin.Android e UWP native. Rispetto al fatto che il progetto nativo utilizza ContentPagepagine derivate da un progetto di libreria .NET Standard o progetto condiviso, il vantaggio di aggiungere pagine direttamente ai progetti nativi è che le pagine possono essere estese con visualizzazioni native. Le visualizzazioni native possono quindi essere denominate in XAML con x:Name e a cui viene fatto riferimento dal code-behind. Per altre informazioni sulle viste native, vedere Viste native.
Il processo per l'utilizzo di una Xamarin.FormsContentPagepagina derivata da -in un progetto nativo è il seguente:
- Aggiungere il Xamarin.Forms pacchetto NuGet al progetto nativo.
- Aggiungere la
ContentPagepagina derivata da e tutte le dipendenze al progetto nativo. - Chiamare il metodo
Forms.Init. - Creare un'istanza della
ContentPagepagina derivata da e convertirla nel tipo nativo appropriato usando uno dei metodi di estensione seguenti:CreateViewControllerper iOS,CreateSupportFragmentper Android oCreateFrameworkElementper UWP. - Passare alla rappresentazione del tipo nativo della
ContentPagepagina derivata tramite l'API di spostamento nativa.
Xamarin.Forms deve essere inizializzato chiamando il Forms.Init metodo prima che un progetto nativo possa costruire una ContentPagepagina derivata da . La scelta di quando eseguire questa operazione dipende principalmente dal momento in cui è più conveniente nel flusso dell'applicazione, che può essere eseguita all'avvio dell'applicazione o subito prima che venga costruita la ContentPagepagina derivata da . In questo articolo e nelle applicazioni di esempio abbinate viene chiamato il Forms.Init metodo all'avvio dell'applicazione.
Nota
La soluzione dell'applicazione di esempio NativeForms non contiene progetti Xamarin.Forms . È invece costituito da un progetto Xamarin.iOS, un progetto Xamarin.Android e un progetto UWP. Ogni progetto è un progetto nativo che usa moduli nativi per utilizzare ContentPagepagine derivate da . Tuttavia, non c'è motivo per cui i progetti nativi non potevano utilizzare ContentPagepagine derivate da un progetto di libreria .NET Standard o un progetto condiviso.
Quando si usano moduli nativi, Xamarin.Forms tutte le funzionalità come DependencyService, MessagingCentere il motore di data binding funzionano ancora. Tuttavia, lo spostamento tra le pagine deve essere eseguito usando l'API di spostamento nativa.
iOS
In iOS, l'override FinishedLaunching nella AppDelegate classe è in genere la posizione in cui eseguire attività correlate all'avvio dell'applicazione. Viene chiamato dopo l'avvio dell'applicazione ed è in genere sottoposto a override per configurare la finestra principale e il controller di visualizzazione. L'esempio di codice seguente illustra la AppDelegate classe nell'applicazione di esempio:
[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;
}
// ...
}
Il metodo FinishedLaunching esegue le attività seguenti:
- Xamarin.Forms viene inizializzato chiamando il
Forms.Initmetodo . - Viene creato un nuovo
Xamarin.Forms.Applicationoggetto e il relativo dizionario risorse a livello di applicazione è impostato su unResourceDictionaryoggetto definito in XAML. - Un riferimento alla
AppDelegateclasse viene archiviato nelstaticInstancecampo . Si tratta di fornire un meccanismo per altre classi per chiamare i metodi definiti nellaAppDelegateclasse . - Viene
UIWindowcreato il contenitore principale per le visualizzazioni nelle applicazioni iOS native. - La
FolderPathproprietà viene inizializzata in un percorso nel dispositivo in cui verranno archiviati i dati delle note. - Viene creato un
NotesPageoggetto, ovvero una Xamarin.FormsContentPagepagina derivata da -definita in XAML e il relativo elemento padre viene impostato sull'oggetto creatoXamarin.Forms.Applicationin precedenza. - L'oggetto
NotesPageviene convertito in unUIViewControlleroggetto utilizzando ilCreateViewControllermetodo di estensione. - La
Titleproprietà diUIViewControllerè impostata, che verrà visualizzata nell'oggettoUINavigationBar. - Viene creato un
AppNavigationControlleroggetto per la gestione della navigazione gerarchica. Si tratta di una classe controller di spostamento personalizzata, che deriva daUINavigationController. L'oggettoAppNavigationControllergestisce uno stack di controller di visualizzazione e l'oggettoUIViewControllerpassato al costruttore verrà presentato inizialmente quandoAppNavigationControllerviene caricato . - L'oggetto
AppNavigationControllerviene impostato come primo livelloUIViewControllerperUIWindoweUIWindowviene impostato come finestra chiave per l'applicazione e viene reso visibile. - La
Parentproprietà dell'oggettoNotesPageè impostata sunullper evitare una perdita di memoria.
Dopo l'esecuzione del FinishedLaunching metodo, verrà visualizzata l'interfaccia utente definita nella Xamarin.FormsNotesPage classe , come illustrato nello screenshot seguente:
Importante
Tutte le ContentPagepagine derivate da possono utilizzare risorse definite a livello ResourceDictionarydi applicazione, a condizione che la Parent proprietà della pagina sia impostata sull'oggetto Application .
L'interazione con l'interfaccia utente, ad esempio toccando su + Button, comporterà l'esecuzione del NotesPage gestore eventi seguente nel code-behind:
void OnNoteAddedClicked(object sender, EventArgs e)
{
AppDelegate.Instance.NavigateToNoteEntryPage(new Note());
}
Il static AppDelegate.Instance campo consente di richiamare il AppDelegate.NavigateToNoteEntryPage metodo , illustrato nell'esempio di codice seguente:
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;
}
Il NavigateToNoteEntryPage metodo converte la Xamarin.FormsContentPagepagina derivata da in un UIViewController oggetto con il CreateViewController metodo di estensione e imposta la Title proprietà dell'oggetto UIViewController. l'oggetto UIViewController viene quindi inserito AppNavigationController dal PushViewController metodo . Pertanto, l'interfaccia utente definita nella Xamarin.FormsNoteEntryPage classe verrà visualizzata, come illustrato nello screenshot seguente:
NoteEntryPage Quando viene visualizzato , lo spostamento indietro aprirà per UIViewController la NoteEntryPage classe da AppNavigationController, restituendo l'utente a UIViewController per la NotesPage classe . Tuttavia, l'estrazione di un UIViewController oggetto dallo stack di spostamento nativo iOS non elimina automaticamente l'oggetto UIViewController associato e .Page Pertanto, la classe esegue l'override AppNavigationController del PopViewController metodo per eliminare i controller di visualizzazione sullo spostamento indietro:
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);
}
}
L'override PopViewController chiama il Dispose metodo sull'oggetto UIViewController estratto dallo stack di navigazione nativo iOS. Se non si esegue questa operazione, l'oggetto UIViewController collegato e sarà orfano Page .
Importante
Gli oggetti orfani non possono essere sottoposto a Garbage Collection e quindi comportano una perdita di memoria.
Android
In Android, l'override OnCreate nella MainActivity classe è in genere la posizione in cui eseguire le attività correlate all'avvio dell'applicazione. L'esempio di codice seguente illustra la MainActivity classe nell'applicazione di esempio:
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;
}
...
}
Il metodo OnCreate esegue le attività seguenti:
- Xamarin.Forms viene inizializzato chiamando il
Forms.Initmetodo . - Viene creato un nuovo
Xamarin.Forms.Applicationoggetto e il relativo dizionario risorse a livello di applicazione è impostato su unResourceDictionaryoggetto definito in XAML. - Un riferimento alla
MainActivityclasse viene archiviato nelstaticInstancecampo . Si tratta di fornire un meccanismo per altre classi per chiamare i metodi definiti nellaMainActivityclasse . - Il
Activitycontenuto viene impostato da una risorsa di layout. Nell'applicazione di esempio il layout è costituito da unLinearLayoutche contiene unToolbare un oggettoFrameLayoutda usare come contenitore di frammenti. - Viene
Toolbarrecuperato e impostato come barra delle azioni perActivitye il titolo della barra delle azioni è impostato. - La
FolderPathproprietà viene inizializzata in un percorso nel dispositivo in cui verranno archiviati i dati delle note. - Viene creato un
NotesPageoggetto, ovvero una Xamarin.FormsContentPagepagina derivata da -definita in XAML e il relativo elemento padre viene impostato sull'oggetto creatoXamarin.Forms.Applicationin precedenza. - L'oggetto
NotesPageviene convertito in unFragmentoggetto utilizzando ilCreateSupportFragmentmetodo di estensione. - La
SupportFragmentManagerclasse crea ed esegue il commit di una transazione che sostituisce l'istanzaFrameLayoutcon perFragmentlaNotesPageclasse . - La
Parentproprietà dell'oggettoNotesPageè impostata sunullper evitare una perdita di memoria.
Per altre informazioni sui frammenti, vedere Frammenti.
Dopo l'esecuzione del OnCreate metodo, verrà visualizzata l'interfaccia utente definita nella Xamarin.FormsNotesPage classe , come illustrato nello screenshot seguente:
Importante
Tutte le ContentPagepagine derivate da possono utilizzare risorse definite a livello ResourceDictionarydi applicazione, a condizione che la Parent proprietà della pagina sia impostata sull'oggetto Application .
L'interazione con l'interfaccia utente, ad esempio toccando su + Button, comporterà l'esecuzione del NotesPage gestore eventi seguente nel code-behind:
void OnNoteAddedClicked(object sender, EventArgs e)
{
MainActivity.Instance.NavigateToNoteEntryPage(new Note());
}
Il static MainActivity.Instance campo consente di richiamare il MainActivity.NavigateToNoteEntryPage metodo , illustrato nell'esempio di codice seguente:
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;
}
Il NavigateToNoteEntryPage metodo converte la Xamarin.FormsContentPagepagina derivata da in un Fragment oggetto con il CreateSupportFragment metodo di estensione e aggiunge l'oggetto Fragment allo stack back del frammento. Di conseguenza, l'interfaccia utente definita in Xamarin.FormsNoteEntryPage verrà visualizzata, come illustrato nello screenshot seguente:
Quando l'oggetto NoteEntryPage viene visualizzato, toccando la freccia indietro si aprirà Fragment per l'oggetto NoteEntryPage dallo stack indietro del frammento, restituendo l'utente all'oggetto Fragment per la NotesPage classe .
Abilitare il supporto per lo spostamento indietro
La SupportFragmentManager classe ha un BackStackChanged evento che viene generato ogni volta che cambia il contenuto dello stack back del frammento. Il OnCreate metodo nella MainActivity classe contiene un gestore eventi anonimo per questo evento:
SupportFragmentManager.BackStackChanged += (sender, e) =>
{
bool hasBack = SupportFragmentManager.BackStackEntryCount > 0;
SupportActionBar.SetHomeButtonEnabled(hasBack);
SupportActionBar.SetDisplayHomeAsUpEnabled(hasBack);
SupportActionBar.Title = hasBack ? "Note Entry" : "Notes";
};
Questo gestore eventi visualizza un pulsante Indietro sulla barra delle azioni a condizione che siano presenti una o più Fragment istanze nello stack back del frammento. La risposta a toccare il pulsante Indietro viene gestita dall'override 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);
}
L'override OnOptionsItemSelected viene chiamato ogni volta che viene selezionata una voce nel menu delle opzioni. Questa implementazione popa il frammento corrente dallo stack back del frammento, a condizione che il pulsante Indietro sia stato selezionato e che siano presenti una o più Fragment istanze nello stack back del frammento.
Più attività
Quando un'applicazione è composta da più attività, ContentPagele pagine derivate da possono essere incorporate in ognuna delle attività. In questo scenario, il Forms.Init metodo deve essere chiamato solo nell'override OnCreate del primo Activity oggetto che incorpora un oggetto Xamarin.FormsContentPage. Tuttavia, questo ha l'impatto seguente:
- Il valore di
Xamarin.Forms.Color.Accentverrà ricavato dall'oggettoActivityche ha chiamato ilForms.Initmetodo . - Il valore di
Xamarin.Forms.Application.Currentverrà associato all'oggettoActivityche ha chiamato ilForms.Initmetodo .
Scegli un file
Quando si incorpora una ContentPagepagina derivata da che usa un oggetto WebView che deve supportare un pulsante HTML "Choose File", è necessario eseguire l'override Activity del OnActivityResult metodo :
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
ActivityResultCallbackRegistry.InvokeCallback(requestCode, resultCode, data);
}
UWP
Nella piattaforma UWP la classe nativa App è in genere la posizione in cui eseguire attività correlate all'avvio dell'applicazione. Xamarin.Forms viene in genere inizializzato, nelle Xamarin.Forms applicazioni UWP, nell'override OnLaunched nella classe nativa App , per passare l'argomento LaunchActivatedEventArgs al Forms.Init metodo . Per questo motivo, le applicazioni UWP native che usano una Xamarin.FormsContentPagepagina derivata da possono chiamare più facilmente il Forms.Init metodo dal App.OnLaunched metodo :
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();
// ...
}
Inoltre, il OnLaunched metodo può anche creare qualsiasi dizionario risorse a livello di applicazione richiesto dall'applicazione.
Per impostazione predefinita, la classe nativa App avvia la MainPage classe come prima pagina dell'applicazione. L'esempio di codice seguente illustra la MainPage classe nell'applicazione di esempio:
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;
}
// ...
}
Il MainPage costruttore esegue le attività seguenti:
- La memorizzazione nella cache è abilitata per la pagina, in modo che un nuovo
MainPagenon venga costruito quando un utente torna alla pagina. - Un riferimento alla
MainPageclasse viene archiviato nelstaticInstancecampo . Si tratta di fornire un meccanismo per altre classi per chiamare i metodi definiti nellaMainPageclasse . - La
FolderPathproprietà viene inizializzata in un percorso nel dispositivo in cui verranno archiviati i dati delle note. - Viene creato un
NotesPageoggetto, ovvero una Xamarin.FormsContentPagepagina derivata da -definita in XAML e il relativo elemento padre viene impostato sull'oggetto creatoXamarin.Forms.Applicationin precedenza. - L'oggetto
NotesPageviene convertito in unFrameworkElementoggetto utilizzando ilCreateFrameworkElementmetodo di estensione e quindi impostato come contenuto dellaMainPageclasse . - La
Parentproprietà dell'oggettoNotesPageè impostata sunullper evitare una perdita di memoria.
Dopo l'esecuzione del MainPage costruttore, verrà visualizzata l'interfaccia utente definita nella Xamarin.FormsNotesPage classe , come illustrato nello screenshot seguente:
Importante
Tutte le ContentPagepagine derivate da possono utilizzare risorse definite a livello ResourceDictionarydi applicazione, a condizione che la Parent proprietà della pagina sia impostata sull'oggetto Application .
L'interazione con l'interfaccia utente, ad esempio toccando su + Button, comporterà l'esecuzione del NotesPage gestore eventi seguente nel code-behind:
void OnNoteAddedClicked(object sender, EventArgs e)
{
MainPage.Instance.NavigateToNoteEntryPage(new Note());
}
Il static MainPage.Instance campo consente di richiamare il MainPage.NavigateToNoteEntryPage metodo , illustrato nell'esempio di codice seguente:
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;
}
Lo spostamento nella piattaforma UWP viene in genere eseguito con il Frame.Navigate metodo , che accetta un Page argomento. Xamarin.Forms definisce un metodo di Frame.Navigate estensione che accetta un'istanza ContentPagedi pagina derivata da . Pertanto, quando il NavigateToNoteEntryPage metodo viene eseguito, verrà visualizzata l'interfaccia utente definita in Xamarin.FormsNoteEntryPage , come illustrato nello screenshot seguente:
Quando l'oggetto NoteEntryPage viene visualizzato, toccando la freccia indietro si aprirà FrameworkElement per l'oggetto NoteEntryPage dallo stack back in-app, restituendo l'utente all'oggetto FrameworkElement per la NotesPage classe .
Abilitare il supporto per il ridimensionamento delle pagine
Quando la finestra dell'applicazione UWP viene ridimensionata, anche il Xamarin.Forms contenuto deve essere ridimensionato. Questa operazione viene eseguita registrando un gestore eventi per l'evento Loaded , nel MainPage costruttore :
public MainPage()
{
// ...
this.Loaded += OnMainPageLoaded;
// ...
}
L'evento Loaded viene generato quando la pagina viene disposta, sottoposta a rendering e pronta per l'interazione ed esegue il OnMainPageLoaded metodo in risposta:
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));
};
}
Il OnMainPageLoaded metodo registra un gestore eventi anonimo per l'evento Frame.SizeChanged , che viene generato quando le ActualHeight proprietà o ActualWidth cambiano in Frame. In risposta, il Xamarin.Forms contenuto della pagina attiva viene ridimensionato chiamando il Layout metodo .
Abilitare il supporto per lo spostamento indietro
Nella piattaforma UWP, le applicazioni devono abilitare lo spostamento indietro per tutti i pulsanti indietro hardware e software, in diversi fattori di forma del dispositivo. A tale scopo, è possibile registrare un gestore eventi per l'evento BackRequested , che può essere eseguito nel MainPage costruttore:
public MainPage()
{
// ...
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
}
Quando l'applicazione viene avviata, il GetForCurrentView metodo recupera l'oggetto SystemNavigationManager associato alla visualizzazione corrente, quindi registra un gestore eventi per l'evento BackRequested . L'applicazione riceve questo evento solo se è l'applicazione in primo piano e in risposta chiama il OnBackRequested gestore eventi:
void OnBackRequested(object sender, BackRequestedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame.CanGoBack)
{
e.Handled = true;
rootFrame.GoBack();
noteEntryPage = null;
}
}
Il OnBackRequested gestore eventi chiama il GoBack metodo nel frame radice dell'applicazione e imposta la BackRequestedEventArgs.Handled proprietà su per true contrassegnare l'evento come gestito. Se non si contrassegna l'evento come gestito, l'evento potrebbe essere ignorato.
L'applicazione sceglie se visualizzare un pulsante Indietro sulla barra del titolo. Questa operazione viene ottenuta impostando la AppViewBackButtonVisibility proprietà su uno dei AppViewBackButtonVisibility valori di enumerazione, nella App classe :
void OnNavigated(object sender, NavigationEventArgs e)
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
((Frame)sender).CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed;
}
Il OnNavigated gestore eventi, che viene eseguito in risposta alla generazione dell'evento Navigated , aggiorna la visibilità del pulsante Indietro della barra del titolo quando si verifica lo spostamento nella pagina. In questo modo si garantisce che il pulsante Indietro della barra del titolo sia visibile se lo stack back in-app non è vuoto o rimosso dalla barra del titolo se lo stack back in-app è vuoto.
Per altre informazioni sul supporto dello spostamento indietro su UWP, vedi Cronologia di spostamento e spostamento indietro per le app UWP.





