我刚开始使用Xamarin表单,并遵循this示例。但对于横向模式,它始终打开导航抽屉。这是默认行为吗?以下是我的代码
public class NavigationDrawer : MasterDetailPage // Navigation Drawer using MasterDetailPage
{
public override bool ShouldShowToolbarButton()
{
return true;
}
ContentPage gotoPage;
public NavigationDrawer()
{
Title = "Navigation Drawer Using MasterDetailPage";
string[] myPageNames = { "Camera2 Demo", "Second", "Third" };
SizeChanged += NavigationDrawer_SizeChanged;
ListView listView = new ListView
{
ItemsSource = myPageNames,
};
this.Master = new ContentPage
{
Title = "Options",
Content = listView,
Icon = "hamburger.png"
};
listView.ItemTapped += (sender, e) =>
{
switch (e.Item.ToString())
{
case "Camera2 Demo":
gotoPage = new CameraPage();
break;
case "Second":
gotoPage = new SecondPage();
break;
case "Third":
gotoPage = new ThirdPage();
break;
default:
gotoPage = new NavigationPage1();
break;
}
Detail = new NavigationPage(gotoPage);
((ListView)sender).SelectedItem = null;
this.IsPresented = true;
};
Detail = new NavigationPage(new HomePage());
IsPresented = false;
//// For Windows Phone, provide a way to get back to the master page.
//if (Device.OS == TargetPlatform.WinPhone)
//{
// (this.Detail as ContentPage).Content.GestureRecognizers.Add(
// new TapGestureRecognizer((view) =>
// {
// this.IsPresented = true;
// }));
//}
}
问题
1)如何控制导航抽屉的打开和关闭?我发现了一种可以控制导航抽屉宽度的方法。 Here是链接。但这是现在最好的选择吗?
1)由于项目需要跨平台Xamarin表单控件似乎是一种选择。
2)我们应该使用自定义控件而不是Xamarin表单控件吗?
我刚开始使用Xamarin示例代码,如果有人可以指导我完成此操作,我将不胜感激。
答案 0 :(得分:2)
1)如何控制导航抽屉的打开和关闭?
使用this.IsPresented = true;
打开并this.IsPresented = false;
关闭抽屉。
关于其他问题我不了解您,但根据您的要求,您应该创建自定义控件或从NuGet
下载。
注意:强>
我相信初学者最重要的事情是学习如何使用DependencyService
实现本机代码,并使用 MVVM 等设计模式。
答案 1 :(得分:1)
您需要在MasterDetailPage上设置MasterBehavior = MasterBehavior.Popover
以强制它展示您所追求的行为,否则它将默认为MasterBehavior.Default
,在横向模式下将始终打开。