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?
-
Avvolgi la pagina corrente all'interno dello stack di navigazione in
App.cs
e impostalo comeMainPage
, in modo da poter eseguire l'operazione di navigazione.public App() { InitializeComponent(); MainPage = new NavigationPage(new MainPage()); }
-
Come
Jason
menzionato , non è necessario impostareMainPage
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); } }