【问题标题】:How to navigate from CarouselPage to MasterDetailPage如何从 CarouselPage 导航到 MasterDetailPage
【发布时间】:2015-09-16 18:03:37
【问题描述】:

我必须从 CarouselPage 导航到 MasterDetailPage。我创建了两个不同的页面,我的第一页是轮播页面,点击轮播页面中的任何按钮我应该导航到 masterdetailpage。

请帮助我如何编写代码,我的母版页不同,详细页不同,两者都写在内容页中。

代码:

app.cs

public static MasterDetailPage MasterDetailPage;
public App()
{
    var isLoggedIn = App.Current.Properties.ContainsKey("IsLoggedIn")? (bool)Properties["IsLoggedIn"] : false;
        // The root page of your application
        if (isLoggedIn)
        {
            MasterDetailPage = new Xamarin.Forms.MasterDetailPage
            {
                Master = new Menu(),
                Detail = new NavigationPage(new detail())
                {
                    Tint = Color.FromHex("313FA0")
                }
            };

            MasterDetailPage.MasterBehavior = MasterBehavior.Popover;

            MainPage = MasterDetailPage;
        }
        else
        {
           MainPage = new NavigationPage(new carousel());
        }
}

carousel.xaml.cs

<CarouselPage>
 <ContentPage>
   <StackLayout>
     <Button Text="click" Clicked="funca()"/>
   </StackLayout>
  </ContentPage>
</CarouselPage>

carousel.cs

void funca(object sender, EventArgs e){
    App.MasterDetailPage.Master = new Menu();
    App.MasterDetailPage.Detail = new NavigationPage(new detail());
    App.MasterDetailPage.IsPresented = false;  
}

在点击按钮时显示错误

System.Exception: Object reference not set to an instance of an object

请帮帮我

【问题讨论】:

  • 你可以添加堆栈跟踪的其余部分吗?以及你的应用程序代码
  • 就像@RuiMarinho 所说,恐怕我们需要更多信息在这里..
  • @RuiMarinho 我在我的代码和应用程​​序代码中做了一些编辑,我也给了请检查它
  • @RuiMarinho 我的菜单和详细信息页面都在内容页面中

标签: c# xamarin xamarin.forms


【解决方案1】:

请查看我的示例 repo here。我正在使用基于MessagingCenterthere 解决方案,我相信它也应该适用于您的场景。请记住在您的MasterDetailPage 中添加类似于this 的内容。

【讨论】:

  • 感谢@Tomasz 在您的代码的帮助下,我找到了简单编码的替代答案
【解决方案2】:

我在@Tomasz Kowalczyk 的帮助下找到了给定问题的答案,谢谢老兄

我创建了一个类 MasterPage.cs

public class MasterPage : MasterDetailPage
{
    public MasterPage()
    {
        Master = new Menu();
        Detail = new NavigationPage(new detail());
    }
}

app.cs

public App()
{
  var isLoggedIn = App.Current.Properties.ContainsKey("IsLoggedIn")? (bool)Properties["IsLoggedIn"] : false;
    // The root page of your application
    if (isLoggedIn)
    {
        MainPage = new MasterPage();
    }
    else
    {
       MainPage = new NavigationPage(new carousel());
    }
}

carousel.cs

void funca(object sender, EventArgs e){
   MasterPage mp = new Menu();
   mp.Detail = new NavigationPage(new Detail());
   App.Current.MainPage = mp;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多