Xamarin UWP + Android ContentPage Navigation PushAsync

Xamarin UWP + Android ContentPage Navigation PushAsync

La soluzione per Xamarin UWP + Android ContentPage Navigation PushAsync
è indicata di seguito:

Sto convertendo un'applicazione UWP in Xamarin con l'obiettivo di utilizzarla sia su dispositivi Android che Windows.
Non ho mai usato Xamarin prima e presumo di aver commesso un errore iniziale.

Sulla mia MainPage è tutto OK :

Ma quando faccio clic sul pulsante "Opzioni" non viene caricata una nuova pagina tranne un banner grigio nella parte superiore della finestra:

Per navigare da una pagina all'altra ho seguito questa spiegazione:Microsoft doc navigation

C'è il mio codice per cambiare pagina in MainPage.xaml.cs :

async void ButtonOptions_Click(object sender, EventArgs args)
    {
        try
        {
            button_options.Source = "Assets/Option_Icon_1.png";
            Application.Current.MainPage = new NavigationPage(new MainPage());
            var OptionsView = new OptionsView();
            await Device.InvokeOnMainThreadAsync(() => Navigation.PushAsync(OptionsView, true));
            //this.Frame.Navigate(typeof(StorageView1));
        }
        catch (Exception ex) { InterpretException("MainPage.ButtonStorage_Click()", ex); }
    }

E il mio OptionsView.xaml :

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="Stock_Manager_Xamarin.OptionsView"
         Title="Second Page">
<ContentPage.Content>
    <StackLayout HorizontalOptions="Center" VerticalOptions="Center">
        <StackLayout Orientation="Horizontal">
            <Label Text="Name:" HorizontalOptions="FillAndExpand" />
            <Label Text="{Binding Name}" FontSize="Medium" FontAttributes="Bold" />
        </StackLayout>
            
        <Button x:Name="navigateButton" Text="Previous Page"/>
    </StackLayout>
</ContentPage.Content>

Ho provato una versione diversa del codice xaml senza alcuna modifica e non riesco a trovare un esempio funzionante.
Qualcuno potrebbe spiegarmi dove sto commettendo un errore?

  1. Avvolgi la pagina corrente all'interno dello stack di navigazione in App.cs e impostalo come MainPage , in modo da poter eseguire l'operazione di navigazione.

    public App()
     {
         InitializeComponent();
    
         MainPage = new NavigationPage(new MainPage());
     } 
    
  2. Come Jason menzionato , non è necessario impostare MainPage di nuovo , naviga direttamente , modifica il tuo codice come di seguito .

    void ButtonOptions_Click(object sender, EventArgs args)
    {
        try
        {
            button_options.Source = "Assets/Option_Icon_1.png";
            var OptionsView = new OptionsView();
            Navigation.PushAsync(OptionsView, true);
        }
        catch (Exception ex) { InterpretException("MainPage.ButtonStorage_Click()", ex); }
    }