我在Xamarin.Forms中做了一个有2页的测试应用程序。主页是我想放置登录页面的堆栈的开始。在PushModalAsync之后,登录页面不显示。
随函附上我有一个测试项目的 zip 文件。
测试项目
public static async void StartLogin()
{
Button btnLogin = new Button();
btnLogin.Text = "Login";
btnLogin.BackgroundColor = Color.Green;
btnLogin.TextColor = Color.White;
ContentPage _loginPage = new ContentPage
{
Title = "Login",
Content = new StackLayout
{
Spacing = 20,
Padding = 50,
VerticalOptions = LayoutOptions.Center,
Children =
{
btnLogin,
}
}
};
_loginPage.BackgroundColor = Color.Black;
await Navigation.PushAsync(_loginPage);
}
尝试:
Device.BeginInvokeOnMainThread(() => Navigation.PushAsync(_loginPage););
由于导航是 UI 操作,因此必须在 UI 线程上执行。如果您将其保留为原样,则不会发生任何事情,因为它尚未在 UI 线程上执行。使用Device.BeginInvokeOnMainThread
应该可以解决这个问题