xamarin 如何从CarouselPage导航到MasterDetailPage

7ajki6be  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(103)

我必须从CarouselPage导航到MasterDetailPage。我已经创建了两个不同的我的第一个页面是在curousel页面中的任何按钮,我应该导航到masterdeatilpage点击轮播页面。
请帮助我如何写代码和我的主页是不同的,详细页是不同的,都是在内容页写的。
代码:
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


请帮帮我

zsohkypk

zsohkypk1#

请看看我的样本库here。我正在使用基于MessagingCenter的解决方案,我相信它也应该在您的场景中工作。请记住在MasterDetailPage中放入类似的内容。

ego6inou

ego6inou2#

我在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;
}

相关问题