我有一個xamarin表單應用程序。該佈局是使用自定義的rootpage.cs文件創建的。它有用於瀏覽頁面的導航菜單。在App.cs文件重定向到根頁通過在將MasterDetailPage添加到Xamarin表單中的容器錯誤之前,必須設置Master和Detail
MainPage = new RootPage();
裏面的rootPage類文件
Dictionary<MenuType, NavigationPage> Pages { get; set; }
public RootPage()
{
Pages = new Dictionary<MenuType, NavigationPage>();
Master = new MenuPage(this);
BindingContext = new BaseViewModel
{
Title = "Manager",
Icon = "icon.png"
};
NavigateAsync(MenuType.Home);
InvalidateMeasure();
}
public async Task NavigateAsync(MenuType id)
{
Page newPage;
if (!Pages.ContainsKey(id))
{
switch (id)
{
case MenuType.Home:
Pages.Add(id, new NavigationPage(new HomePage()));
break;
case MenuType.AboutUs:
Pages.Add(id, new NavigationPage(new ContactUsPage()));
break;
}
}
newPage = Pages[id];
if (newPage == null)
return;
Detail = newPage;
IsPresented = false;
}
在菜單頁面的類文件具有下面的代碼
RootPage root;
public MenuPage(RootPage _root)
{
root = _root;
InitializeComponent();
List<HomeMenuItemModel> menuItems;
BindingContext = new BaseViewModel
{
Title = "Sample App",
Subtitle = "Sample App",
Icon = "icon.png"
};
ListViewMenu.ItemsSource = menuItems = new List<HomeMenuItemModel>
{
new HomeMenuItemModel { Title = "Home", MenuType = MenuType.Home, Icon ="icon.png" },
new HomeMenuItemModel { Title = "Contact Us", MenuType = MenuType.ContactUs, Icon ="icon.png" },
new HomeMenuItemModel { Title = "About Us", MenuType = MenuType.AboutUs, Icon ="icon.png" },
};
ListViewMenu.SelectedItem = menuItems[0];
ListViewMenu.ItemSelected += async (sender, e) =>
{
if (ListViewMenu.SelectedItem == null)
return;
if (e.SelectedItem != null)
await this.root.NavigateAsync(((HomeMenuItemModel)e.SelectedItem).MenuType);
ListViewMenu.SelectedItem = null;
};
}
首頁.xaml只是一個內容頁面。 雖然第一次運行應用程序,但它顯示錯誤「Master和Detail必須在將MasterDetailPage添加到容器錯誤之前設置」 我是xamarin的新手。你能否爲此提出一個解決方案。
Detail屬性沒有在我的情況下設置。謝謝! – JedatKinports