关闭Xamarin表单导航抽屉
问题描述:
我刚从Xamarin表单开始,并跟着this的例子。但对于横向模式,它总是打开导航抽屉。这是默认行为吗?下面是我的代码关闭Xamarin表单导航抽屉
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示例代码将不胜感激,如果有人可以指导我通过这个。
答
您需要在MasterDetailPage上设置MasterBehavior = MasterBehavior.Popover
以强制它展现出您之后的行为,否则它将默认为MasterBehavior.Default
,在横向模式下它将始终打开。
答
1)如何控制导航抽屉的打开和关闭?
使用this.IsPresented = true;
打开并this.IsPresented = false;
关闭抽屉。 关于其他问题我不明白你的好,但根据你的要求,你应该创建自定义控件或从NuGet
下载。
注:
我相信对于初学者,最重要的是学会如何使用DependencyService
实现原生代码,同时也使用设计模式,如MVVM。