2017-05-05 1 views
2

私はxamarinフォームアプリケーションを持っています。レイアウトは、カスタムrootpage.csファイルを使用して作成されます。ページをナビゲートするためのナビゲーションメニューがあります。 App.csファイルでメニューページクラスファイルでrootPageクラスファイル内MasterDetailPageをXamarinフォームのコンテナエラーに追加する前にマスターと詳細を設定する必要があります

MainPage = new 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は単なるコンテンツページです。 アプリケーションの最初の実行中に、「MasterDetailPageをコンテナエラーに追加する前にマスターと詳細を設定する必要があります」というエラーが表示されます。 xamarinを初めて使用しました。あなたはこれのための解決策を提案してください。

答えて

4

エラーは文字通り何が起こっているのですか? MasterDetailの両方のプロパティーをMasterDetailPageに設定してから、たとえばNavigationPageなどのコンテナーページに追加する必要があります。

+0

私の場合、詳細プロパティは設定されていません。ありがとう! – JedatKinports

0

このエラーは、主にプロパティタイトルがXAMLに存在しない場合に発生します。 XAMLでsidemenuページとホームページにTitle={Binding Titleを割り当てているかどうかを確認してください。これが修正されていない場合は、ログファイルを投稿してください。

1

はあなたのコンストラクタnは、このコードを追加します。

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

それは私のために動作します。

関連する問題