下面是我的代碼不起作用,你可以發現什麼是錯的?不能得到這個MasterDetail與棱鏡和列表視圖
我試圖將它轉換爲棱鏡 https://github.com/xamarin/xamarin-forms-samples/tree/master/Navigation/MasterDetailPage
我不斷收到
「System.InvalidOperationException:未在Android的全球支持 PushAsync,請使用NavigationPage。」
我使用的是navigationpage(我覺得我做的)
可能有人看代碼。下面是所有的代碼,並告訴我,我到底做錯了什麼?
非常感謝!
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; }
}
也異常發生時做
?啓動應用程序後?或者當點擊左側菜單? 更改App.cs NavigationService.NavigateAsync(「MainPage/Navigation/ContactsPage」);到「MainPage/MainNavigationPage/ContactsPage」會有幫助嗎? – lowleetak
感謝您發現,但仍然相同的錯誤 – developer9969