2017-05-05 31 views
2

我有一個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的新手。你能否爲此提出一個解決方案。

回答

4

錯誤實際上是怎麼回事。在將其添加到容器頁面之前,您需要設置MasterDetailPageMasterDetail屬性,例如,像NavigationPage。

+0

Detail屬性沒有在我的情況下設置。謝謝! – JedatKinports

0

這個錯誤大多發生在XAML中缺少屬性Title時。 檢查您是否在XAML中爲側邊菜單頁和主頁分配了Title={Binding Title}。如果這個問題沒有解決,請發佈日誌文件。

1

添加,正你的構造此代碼:

Master = new MenuPage(this); 
Detail = new MenuPage(this); 

這對我的作品。

相關問題