Xamarin UWP + Android ContentPage Navigation PushAsync

Xamarin UWP + Android ContentPage Navigation PushAsync

Die Lösung für Xamarin UWP + Android ContentPage Navigation PushAsync
wird unten angegeben:

Ich konvertiere eine UWP-Anwendung in Xamarin, um sie sowohl auf Android- als auch auf Windows-Geräten zu verwenden.
Ich habe Xamarin noch nie zuvor verwendet und mache vermutlich einen Anfängerfehler.

Auf meiner Hauptseite ist alles OK :

Aber wenn ich auf die Schaltfläche „Optionen“ klicke, wurde keine neue Seite geladen, außer einem grauen Banner im oberen Teil des Fensters:

Um von einer Seite zur anderen zu navigieren, habe ich diese Erklärung befolgt:Microsoft doc navigation

Es gibt meinen Code zum Wechseln der Seite in der 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); }
    }

Und meine 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>

Ich habe eine andere Version des XAML-Codes ohne Änderung ausprobiert und kann kein funktionierendes Beispiel finden.
Könnte mir jemand erklären, wo ich einen Fehler mache?

  1. Umschließt die aktuelle Seite innerhalb des Navigationsstapels in App.cs , und legen Sie ihn als MainPage fest , damit wir die Navigationsoperation durchführen können .

    public App()
     {
         InitializeComponent();
    
         MainPage = new NavigationPage(new MainPage());
     } 
    
  2. Als Jason erwähnt, ist es nicht notwendig, MainPage einzustellen Navigieren Sie erneut einfach direkt und ändern Sie Ihren Code wie unten beschrieben .

    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); }
    }