关闭Xamarin表单导航抽屉

时间:2016-07-26 16:54:38

标签: c# xamarin.ios xamarin.android

我刚开始使用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示例代码,如果有人可以指导我完成此操作,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

  

1)如何控制导航抽屉的打开和关闭?

使用this.IsPresented = true;打开并this.IsPresented = false;关闭抽屉。 关于其他问题我不了解您,但根据您的要求,您应该创建自定义控件或从NuGet下载。

注意:
我相信初学者最重要的事情是学习如何使用DependencyService实现本机代码,并使用 MVVM 等设计模式。

答案 1 :(得分:1)

您需要在MasterDetailPage上设置MasterBehavior = MasterBehavior.Popover以强制它展示您所追求的行为,否则它将默认为MasterBehavior.Default,在横向模式下将始终打开。