【问题标题】:Xamarin.forms Navigation Drawer on button click按钮单击时的 Xamarin.forms 导航抽屉
【发布时间】:2017-04-27 14:59:45
【问题描述】:

如何在按钮/图标单击时以 xamarin 表单显示导航抽屉。 我的详细信息页面中有一个按钮,单击时我希望导航抽屉 ISPresented 为真。如何才能做到这一点?提前致谢

【问题讨论】:

  • masterPage.IsPresented = true / false;

标签: xamarin.forms navigation-drawer


【解决方案1】:

这里有多个选项,最明显和最简单的实现是使用MessagingCenter。由于您无法直接访问MasterDetailPage,并且您希望避免耦合。

在您创建 MasterDetailPage 时,订阅这样的事件:

MessagingCenter.Subscribe<MainPage> (this, "OpenMaster", (sender) => {
    masterPage.IsPresented = !masterPage.IsPresented;
});

现在,在您想要触发功能的按钮上,执行发送此消息,如下所示:

MessagingCenter.Send&lt;MainPage&gt; (this, "OpenMaster");.

现在,我不知道有关您的代码的任何详细信息,因此我无法帮助您准确地将其放在哪里,您可能需要替换一些诸如 MainPage 之类的东西以与您的代码相对应。但这应该会给你一个想法。

【讨论】:

  • 我不知道应该把这段代码放在哪里。帮帮我。
  • 我有两个具有抽屉的一级导航抽屉,另一个是名为“预订”的详细信息页面。现在我在预订课程中有一个按钮,我想从那里打开抽屉
  • 把订阅放在你的抽屉页面,这可以访问IsPresented属性。在预订舱位上输入您的按钮代码。
  • 我用过这个 MessagingCenter.Subscribe (this, "OpenMaster", (sender) => { IsPresented = !IsPresented; });
  • 就像我说的,你可能需要用你自己的名字替换MainPage。请使用相关代码(包括类名)更新您的问题,并指定什么不起作用
【解决方案2】:

杰拉德成功了

在您创建 MasterDetailPage 时,订阅这样的事件:

MessagingCenter.Subscribe<MainPage> (this, "OpenMaster", (sender) => {
    masterPage.IsPresented = !masterPage.IsPresented;
});

现在,在您想要触发功能的按钮上,执行发送此消息,如下所示:

MessagingCenter.Send<MainPage> (this, "OpenMaster");.

【讨论】:

  • 谢谢!杰拉德·维斯路斯
  • 在添加主详细信息页面时,我在顶部得到了不需要的空间如何删除它???
【解决方案3】:

试试这个最简单的解决方案

((MasterDetailPage)App.Current.Mainpage).Master.IsPresented = true;

【讨论】:

  • 帮帮我在添加主详细信息页面时,我在顶部得到了不需要的空间如何删除它???
  • 不知道如何删除
  • 使用没有导航页的详情页是正确的方法。谢谢!
猜你喜欢
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多