MasterDetail 페이지를 사용하는 응용 프로그램에서 작동하고 있지만, 페이지를 탐색하는 방법에 대해 약간 혼란스러워합니다.Xamarin이 MasterDetailPage 탐색을 구성합니다.
순간 나는 메뉴 항목이 응용 프로그램의 일부 페이지를 열어 잘 작동하고, 사이드 메뉴가 유지됩니다. 인스턴트 메신저와 혼동하는 것은 표시되는 메인 페이지의 버튼을 처리하는 방법입니다. 현재 내 버튼은 새로운 페이지를 열지 만 MasterDetail 페이지의 사이드 메뉴는 일반 NavigationPage로 사라집니다.
아래 버튼 코드를 알려 드리겠습니다.
btnSocial.GestureRecognizers.Add(new TapGestureRecognizer
{
Command = new Command(() =>
{
Navigation.PushAsync(new SocialPage());
})
});
이 방법이 MasterDetail 페이지를 탐색하는 방식입니까, 아니면 뭔가 잘못하고 있다고 생각합니까? 편집을 할
** **이, 난 내 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;
}
}
당신은 저를 혼란스럽게하는 것을 보았습니다, 나는 이미 메뉴를 처리해야하지만, 실제 페이지의 버튼으로 이동하는 방법은 너무 명확하지 않습니다. ContentPages를 전혀 사용해야합니까 아니면 그냥 MasterDetailPages를 사용해야합니까? – ADuggan
어쩌면 simpeler, 예제 코드에서'NavigationPage'에'ContentPage'를 감싸는 것에 유의하십시오. 그래서 당신의 코드는 다음과 같습니다 :'Navigation.PushAsync (new NavigationPage (new SocialPage()));' –