2016-09-16 131 views
0

所以我一直都努力了使用MasterDetail页的应用程序,它会很好,但它想通过怎样的网页浏览我只是有点困惑。Xamarin形成MasterDetailPage导航

目前我有打开的应用程序的某些页面菜单项目和部分工作的伟大,侧面菜单停留。混淆的事情是如何处理显示主页面上的按钮。目前我的按钮只是打开一个新页面,但MasterDetail页面的侧边菜单消失在常规的NavigationPage中。

我会在下面给出我的按钮代码。

btnSocial.GestureRecognizers.Add(new TapGestureRecognizer 
{ 
    Command = new Command(() => 
    { 
     Navigation.PushAsync(new SocialPage()); 
    }) 
}); 

这是一个MasterDetail页面是如何导航还是你觉得我做错了什么?

** ** EDITED

只是柜面这会有所帮助,我会附上我menuopage和launchpage代码:

MenuPage.cs

public class MenuPage : ContentPage 
{ 
    public Action<ContentPage> OnMenuSelect { get; set; } 

    public MenuPage() 
    { 
     Title = "Menu"; 
     Icon = "ic_menu.png"; 
     BackgroundColor = ProjectVariables.PRIMARY_COLOR; 

     var items = new List<MenuItems>() 
     { 
      new MenuItems("Social",() => new SocialPage()), 
      new MenuItems("Career",() => null), 
      new MenuItems("MySchedule",() => null), 
      new MenuItems("Videos",() => null), 
      new MenuItems("Contact",() => null), 
      new MenuItems("Sign in",() => null) 
     }; 

     var dataTemplate = new DataTemplate(typeof(TextCell)); 

     dataTemplate.SetValue(TextCell.TextColorProperty, Color.White); 
     dataTemplate.SetBinding(TextCell.TextProperty, "Name"); 

     var listview = new ListView() 
     { 
      ItemsSource = items, 
      ItemTemplate = dataTemplate 
     }; 

     listview.BackgroundColor = ProjectVariables.PRIMARY_COLOR; 
     listview.ItemSelected += (object sender, SelectedItemChangedEventArgs e) => 
     { 
      if(OnMenuSelect != null) 
      { 
       var item = (MenuItems)e.SelectedItem; 
       var itemPage = item.PageFn(); 

       OnMenuSelect(itemPage); 
      } 
     }; 

     Content = new StackLayout 
     { 
      Orientation = StackOrientation.Vertical, 
      Children = 
      { 
       listview 
      } 
     }; 
    } 
} 

LaunchPage.cs

public class LaunchPage : MasterDetailPage 
{ 
    public LaunchPage() 
    { 
     var menuPage = new MenuPage(); 

     menuPage.OnMenuSelect = (categoryPage) => 
     { 
      Detail = new NavigationPage(categoryPage); 
      //Detail.Navigation.PushAsync(categoryPage); 
      IsPresented = false; 
     }; 

     Master = menuPage; 
     Detail = new NavigationPage(new MainPage()) 
     { 
      BarTextColor = Color.White, 
      BarBackgroundColor = ProjectVariables.PRIMARY_COLOR 
     }; 

     MasterBehavior = MasterBehavior.Split; 
    } 
} 

回答

0

看看Xamarin的this documentation page

它看起来像你不使用导航服务。您需要参考主页面并为其设置Detail属性。

特别关注一下this section

public partial class MainPage : MasterDetailPage 
{ 
    public MainPage() 
    { 
     ... 
     masterPage.ListView.ItemSelected += OnItemSelected; 
    } 

    void OnItemSelected (object sender, SelectedItemChangedEventArgs e) 
    { 
     var item = e.SelectedItem as MasterPageItem; 
     if (item != null) { 
      Detail = new NavigationPage ((Page)Activator.CreateInstance (item.TargetType)); 
      masterPage.ListView.SelectedItem = null; 
      IsPresented = false; 
     } 
    } 
} 

在一个ListView项的选择,他们设置Detail属性,它会做的导航为您服务。

+0

你看,这就是东西这就是困惑我,我已经有一个处理菜单partt但即时通讯也不太清楚如何使用按钮导航的实际网页上。我应该使用ContentPages还是应该使用MasterDetailPages? – ADuggan

+0

也许它是simpeler,请注意,在示例代码中,他们将'ContentPage'封装在'NavigationPage'中,是否尝试过?因此,在您的代码将是:'Navigation.PushAsync(新的NavigationPage(新的SocialPage()));' –

相关问题