C# 关闭Xamarin表单导航抽屉
我只是从Xamarin表单开始,并遵循示例。但对于横向模式,它总是打开导航抽屉。这是默认行为吗?下面是我的代码C# 关闭Xamarin表单导航抽屉,c#,xamarin.ios,xamarin.android,C#,Xamarin.ios,Xamarin.android,我只是从Xamarin表单开始,并遵循示例。但对于横向模式,它总是打开导航抽屉。这是默认行为吗?下面是我的代码 public class NavigationDrawer : MasterDetailPage // Navigation Drawer using MasterDetailPage { public override bool ShouldShowToolbarButton() { return true; } Content
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) 如何控制导航抽屉的打开和关闭?我找到了一种方法,可以让我们控制导航抽屉的宽度。是链接。但这是目前最好的选择吗
1) 由于项目要求是跨平台的,所以Xamarin表单控件似乎是选项之一
2) 我们应该使用自定义控件而不是Xamarin窗体控件吗
我刚开始学习Xamarin示例代码,如果有人能指导我完成这项工作,我将不胜感激
1) 如何控制导航抽屉的打开和关闭
使用this.IsPresented=true
打开并this.IsPresented=false代码>关闭抽屉。
关于其他问题,我不太了解您,但根据您的要求,您应该创建自定义控件或从NuGet
下载一个
注意:
我认为对于初学者来说,最重要的事情是学习如何使用DependencyService
实现本机代码,以及使用类似MVVM的设计模式
1) 如何控制导航抽屉的打开和关闭
使用this.IsPresented=true
打开并this.IsPresented=false代码>关闭抽屉。
关于其他问题,我不太了解您,但根据您的要求,您应该创建自定义控件或从NuGet
下载一个
注意:
我认为对于初学者来说,最重要的事情是学习如何使用DependencyService
实现本机代码,以及使用设计模式,如MVVM您需要在MasterDetailPage上设置MasterBehavior=MasterBehavior.Popover
,以强制它显示您所追求的行为,否则它将默认为MasterBehavior.default
,在横向模式下它将始终打开。您需要在MasterDetailPage上设置MasterBehavior=MasterBehavior.Popover
,以强制它显示您所追求的行为,否则它将默认为MasterBehavior.default
,在横向模式下,它将始终打开。因此,如果使用MVVM,则在ViewModel中创建一个属性IsPresented(使用INPC),并使用mode=TwoWay将MasterDetail页面的IsPresented属性绑定到它,然后,在ViewModel中,您可以在需要时将其设置为True/False,而无需担心干扰其默认行为。因此,如果使用MVVM,则在ViewModel中创建一个IsPresented属性(使用INPC),并使用Mode=TwoWay将MasterDetail页的IsPresented属性绑定到它,然后,在ViewModel中,您可以在需要时将其设置为True/False,而无需担心干扰其默认行为。