我正在使用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(){}),它会很好地显示它。
感谢。