|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2007
Messaggi: 182
|
[Xamarin]MasterDetailPage e Back Button
Ciao a tutti, ho un problema con la MasterDetailPage di Xamarin.
L'idea sarebbe quella di avere la pagina Master sempre visibile, così che l'utente abbia un Hamburger Menu sempre a portata di mano, e una pagina Detail implementata con una NavigatedPage dove l'utente possa navigare. Il comportamento che ottengo però non è quello atteso:
Posto il codice e chiedo scusa se non è proprio pulito ma si tratta di 2 righe buttate giù al volo per ricreare il caso. App.xaml.cs Codice:
public partial class App : Application { public static MasterDetailPage Mdp; public App() { InitializeComponent(); Mdp = new MainPage(); MainPage = Mdp; } } Codice:
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:TestXamarin" x:Class="TestXamarin.MainPage"> <MasterDetailPage.Master> <local:MasterPage x:Name="masterPage" /> </MasterDetailPage.Master> <MasterDetailPage.Detail> <NavigationPage> <x:Arguments> <local:ContactsPage /> </x:Arguments> </NavigationPage> </MasterDetailPage.Detail> </MasterDetailPage> Codice:
public partial class MainPage : MasterDetailPage { public MainPage() { InitializeComponent(); masterPage.ListView.ItemSelected += OnItemSelected; if (Device.RuntimePlatform == Device.Windows) { MasterBehavior = MasterBehavior.Popover; } } void OnItemSelected(object sender, SelectedItemChangedEventArgs e) { var item = e.SelectedItem as string; if (item != null) { Detail = new NavigationPage(new ContactsPage()); masterPage.ListView.SelectedItem = null; IsPresented = false; } } } Codice:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="TestXamarin.MasterPage"> <StackLayout> <ListView x:Name="listView" SeparatorVisibility="None"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <Grid Padding="5,10"> <Grid.ColumnDefinitions> <ColumnDefinition Width="30"/> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Label Grid.Column="1" Text="{Binding}" VerticalOptions="FillAndExpand" /> </Grid> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> </ContentPage> Codice:
public partial class MasterPage : ContentPage { public ListView ListView { get { return listView; } } public MasterPage() { Title = "Ciao"; InitializeComponent(); var masterPageItems = new List<string>() {"1","2" }; listView.ItemsSource = masterPageItems; } } Codice:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="TestXamarin.ContactsPage"> <ContentPage.Content> <StackLayout> <Label Text="Contacts data goes here" HorizontalOptions="Center" VerticalOptions="CenterAndExpand" /> <Button Text="Go To Detail" Command="{Binding Cmd}"/> </StackLayout> </ContentPage.Content> </ContentPage> Codice:
public partial class ContactsPage : ContentPage { public Command Cmd => new Command(async () => await Navigation.PushAsync(new ContactDetail())); public ContactsPage() { BindingContext = this; InitializeComponent(); } } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:42.