Voici mon code qui ne fonctionne pas, pourriez-vous repérer ce qui ne va pas?Impossible d'obtenir ce MasterDetail pour travailler avec Prism et listview
Je suis en train de convertir en prisme https://github.com/xamarin/xamarin-forms-samples/tree/master/Navigation/MasterDetailPage
Je continue à obtenir
"System.InvalidOperationException: PushAsync est pas prise en charge à l'échelle mondiale sur Android, s'il vous plaît utiliser un NavigationPage."
J'utilise un navigationpage (je pense que je fais)
Quelqu'un pourrait-il regarder le code .Below est tout le code et dites-moi ce que je fais mal ??
merci beaucoup!
app.cs
public partial class App : PrismApplication
{
public App(IPlatformInitializer initializer = null) : base(initializer) { }
protected override void OnInitialized()
{
InitializeComponent();
NavigationService.NavigateAsync("MainPage/Navigation/ContactsPage");
}
protected override void RegisterTypes()
{
//Container.RegisterTypeForNavigation<NavigationPage>("Navigation");
Container.RegisterTypeForNavigation<MainNavigationPage>("Navigation");
Container.RegisterTypeForNavigation<MainPage,MainPageViewModel>();
Container.RegisterTypeForNavigation<ContactsPage,ContactsPageViewModel>();
Container.RegisterTypeForNavigation<MasterPage,MasterPageViewModel>();
Container.RegisterTypeForNavigation<ReminderPage,ReminderPageViewModel>();
Container.RegisterTypeForNavigation<TodoListPage,TodoListPageViewModel>();
}
}
MainNavigationPage.Xaml
<?xml version="1.0" encoding="utf-8" ?>
<NavigationPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="MasterDetailReferenceApp.Views.MainNavigationPage">
</NavigationPage>
MainPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
xmlns:views="clr-namespace:MasterDetailReferenceApp.Views;assembly=MasterDetailReferenceApp"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="MasterDetailReferenceApp.Views.MainPage"
Title="MainPage">
<MasterDetailPage.Master>
<views:MasterPage x:Name="masterPage" />
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage>
<x:Arguments>
<views:ContactsPage />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
MainPage.cs
public partial class MainPage : MasterDetailPage,IMasterDetailPageOptions
{
public MainPage()
{
InitializeComponent();
}
public bool IsPresentedAfterNavigation => Device.Idiom != TargetIdiom.Phone;
}
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="MasterDetailReferenceApp.Views.MasterPage"
Icon="hamburger.png"
Title="Personal Organiser">
<ContentPage.Content>
<StackLayout VerticalOptions="FillAndExpand">
<ListView x:Name="listView"
RowHeight="60"
SeparatorVisibility="None"
BackgroundColor="White"
HasUnevenRows="true"
ItemSelected="OnMenuItemSelected">
>
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell Text="{Binding Title}" ImageSource="{Binding IconSource}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
MasterPage.cs
public partial class MasterPage : ContentPage
{
public ListView ListView => listView;
public MasterPage()
{
InitializeComponent();
var masterPageItems = new List<MasterPageItem>();
masterPageItems.Add(new MasterPageItem
{
Title = "Contacts",
//Uri = "ContactsPage",
Uri = "Navigation/ContactsPage",
IconSource = "contacts.png",
TargetType = typeof(ContactsPage)
});
masterPageItems.Add(new MasterPageItem
{
Title = "TodoList",
Uri = "Navigation/TodoListPage",
//Uri = "TodoListPage",
IconSource = "todo.png",
TargetType = typeof(TodoListPage)
});
masterPageItems.Add(new MasterPageItem
{
Title = "Reminders",
Uri = "Navigation/RemindersPage",
IconSource = "reminders.png",
TargetType = typeof(ReminderPage)
});
listView.ItemsSource = masterPageItems;
}
private void OnMenuItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = (MasterPageItem)e.SelectedItem;
((MasterPageViewModel)BindingContext).NavigateCommand.Execute(item.Uri);
}
}
MasterPageItem
public class MasterPageItem
{
public string Title { get; set; }
public string Uri { get; set; }
public string IconSource { get; set; }
}
Quand ne se produit l'exception? Après le démarrage de l'application? Ou lorsque vous cliquez sur le menu de gauche? Modification dans App.cs NavigationService.NavigateAsync ("MainPage/Navigation/ContactsPage"); à "MainPage/MainNavigationPage/ContactsPage" aidera? – lowleetak
Merci d'avoir repéré cela mais toujours la même erreur – developer9969