Xamarin表单PopModalAsync不会触发

时间:2016-10-05 08:00:44

标签: c# xamarin xamarin.forms

我正在使用Xamarin.Auth建立一个使用facebook登录的Xamarin.Forms应用程序。

入口点(app.cs):

public App()
{
    MainPage = new WelcomePage();
}

WelcomePage:

using System;
using Xamarin.Forms;

namespace Project
{
    public class WelcomePage : ContentPage
    {
        public WelcomePage()
        {
            var login = new Button { Text = "Login" };
            login.Clicked += (sender, e) =>
            {
                Navigation.PushModalAsync(new LoginPage());
            };

            Content = new StackLayout
            {
                BackgroundColor = Color.FromHex("F0C640"),
                Padding = new Thickness(10, 40, 10, 10),
                Children = {
                    new Label { Text = "Please login" },
                    login
                }
            };
        }
    }
}

LoginPage:

using Xamarin.Forms;

namespace Project
{
    public class LoginPage : ContentPage
    {
    }
}

这是空的,因为我使用Xamarin.Auth对facebook进行身份验证,因此我在iOS和Android上创建了2个不同的渲染器来显示facebook登录页面。登录成功后,我调用了一个位于app.cs文件中的操作:

public Action SuccessfulLoginAction
{
    get
    {
        return new Action(() => goToMainPage());
    }
}

public void goToMainPage()
{
    MainPage.Navigation.PopModalAsync();
    //MainPage.Navigation.PopToRootAsync();
    MainPage.Navigation.PushAsync(new DetailPage());
}

在身份验证结束时,该页面为白色,但我相信在完成身份验证后,它是来自Facebook的白页。

SuccessfulLoginAction很好,所以我通过goToMainPage()函数。

我放了一些断点,PopModalAsync()没有做任何事情,PopToRootAsync()和PushAsync()也是如此......

DetailPage只是一个带有Label的页面。如果我尝试在流程开始时显示它(app(){}),它会很好地显示它。

感谢。

0 个答案:

没有答案