これは、MasterDetailページを使用するアプリケーションで動作していますが、うまくいくようですが、ページをナビゲートする方法についてちょっと混乱します。XamarinはMasterDetailPageナビゲーションを形成します
現在、私はメニュー項目がアプリで開いていて、その部分がうまく機能していると、サイドメニューが表示されます。私が混同しているのは、表示されているメインページのボタンをどう扱うかです。私のボタンは現時点では新しいページを開くだけですが、MasterDetailページのサイドメニューは通常のNavigationPageには表示されません。
下記のボタンコードを入力します。
btnSocial.GestureRecognizers.Add(new TapGestureRecognizer
{
Command = new Command(() =>
{
Navigation.PushAsync(new SocialPage());
})
});
これはちょうどMasterDetailページがナビゲートするか、何か間違っていると思いますか?
**ただ、包みこれは私が私のmenuopageとlaunchpageコードを添付します、助け**
EDITED:
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;
}
}
あなたは私が混乱していることを知っています。私はすでにメニューを処理していますが、実際のページのボタンでどのようにナビゲートするかはあまりよく分かりません。私はContentPagesをまったく使用するべきですか、それともMasterDetailPagesだけを使うべきですか? – ADuggan
これは簡単なことですが、サンプルコードでは 'NavigationPage'に' ContentPage'をラップしていますが、これを試しましたか?あなたのコードでは、 'Navigation.PushAsync(new NavigationPage(new SocialPage()));' –