C# Xamarin表单可移植Windows应用程序未导航

C# Xamarin表单可移植Windows应用程序未导航,c#,xamarin,windows-phone-8.1,xamarin.forms,win-universal-app,C#,Xamarin,Windows Phone 8.1,Xamarin.forms,Win Universal App,我正在从事一个Xamarin Forms便携式项目,其中有一个启动屏幕、一个登录页面和一个仪表板 如果我正确登录到应用程序,我将用户存储在Sqlite数据库中 当我尝试登录并将用户保存在数据库中时,我应该直接转到仪表板(主详细信息页面) 在安卓系统中,这可以正常工作,但在Windows系统中却不起作用。这是我的启动屏幕的代码: public class SplashScreen : ContentPage { public SplashScreen() { thi

我正在从事一个Xamarin Forms便携式项目,其中有一个启动屏幕、一个登录页面和一个仪表板

如果我正确登录到应用程序,我将用户存储在Sqlite数据库中

当我尝试登录并将用户保存在数据库中时,我应该直接转到仪表板(主详细信息页面)

在安卓系统中,这可以正常工作,但在Windows系统中却不起作用。这是我的启动屏幕的代码:

public class SplashScreen : ContentPage
{
    public SplashScreen()
    {
        this.Padding = new Thickness(20, Device.OnPlatform<double>(40, 20, 20), 20, 20);

        StackLayout panel = new StackLayout
        {
            VerticalOptions = LayoutOptions.FillAndExpand,
            HorizontalOptions = LayoutOptions.FillAndExpand,
            Orientation = StackOrientation.Vertical,
            Spacing = 15,
        };

        panel.Children.Add(new Image
        {
            Aspect = Aspect.AspectFit,
            Source = Device.OnPlatform(
                    iOS: ImageSource.FromFile("Resources/login.png"),
                    Android: ImageSource.FromFile("login.png"),
                    WinPhone: ImageSource.FromFile("Assets/login.png"))
        }
        );

        panel.Children.Add(new Label
        {
            Text = "Splash",
        });

        this.Content = panel;

        loguearseSiSePuede();

    }

    private async void loguearseSiSePuede()
    {
        UserLoginDB userDB = new UserLoginDB();
        IEnumerable<UserLogin> users = userDB.getUsers();
        var items = users.ToList();
        Debug.WriteLine("usuario: " + items.Count());
        if (items.Count() > 0)
        {
            var secondpage = new MasterDetail();
            await Navigation.PushAsync(secondpage);
        }
        else
        {
            var secondpage = new Login();
            await Navigation.PushAsync(secondpage);
        }
    }
}
公共类SplashScreen:ContentPage
{
公共屏幕()
{
该填充=新厚度(20,设备平台(40,20,20),20,20);
StackLayout面板=新的StackLayout
{
VerticalOptions=LayoutOptions.FillAndExpand,
HorizontalOptions=LayoutOptions.FillAndExpand,
方向=堆叠方向。垂直,
间距=15,
};
panel.Children.Add(新图像
{
Aspect=Aspect.AspectFit,
Source=Device.OnPlatform(
iOS:ImageSource.FromFile(“Resources/login.png”),
Android:ImageSource.FromFile(“login.png”),
WinPhone:ImageSource.FromFile(“Assets/login.png”))
}
);
panel.Children.Add(新标签
{
Text=“Splash”,
});
这个。内容=面板;
loguearseSiSePuede();
}
私有异步void loguearseSiSePuede()
{
UserLoginDB userDB=新的UserLoginDB();
IEnumerable users=userDB.getUsers();
var items=users.ToList();
Debug.WriteLine(“usuario:+items.Count());
如果(items.Count()>0)
{
var secondpage=新的主详细信息();
等待导航。PushAsync(第二页);
}
其他的
{
var secondpage=新登录名();
等待导航。PushAsync(第二页);
}
}
}
日志Debug.WriteLine(“usuario:+items.Count());正在打印1,因此用户正确存储在数据库中,但在Windows上,应用程序加载splashscreen,并且不会导航到任何屏幕

有人知道为什么这在Windows上不起作用吗


提前感谢

感谢亚历山德罗,这个问题已经得到了回答。我已经将控件移动到App.cs,并且它正在运行的应用程序OK

LogueArseSePuede是一个异步方法,您应该使用wait调用它。但我认为你应该用另一种方式来创建SplashScreen:谢谢你的提示@AlessandroCaliaro。我无法在构造函数中调用异步方法…有任何可能的解决方案吗?我认为您工作不正常。您正在创建SplashScreen并(同时)推送另一页。。。看看我发布的链接,改变你创建SplashScreen的方式,然后在App.cs中创建你的第一个页面(登录或MasterDetail),我正在纠正splash。我已经将控件移动到App.cs,现在它可以正确导航了@亚历山德罗卡亚罗我已经实现了飞溅屏幕以下的教程,它的作品完美!谢谢!