Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置2秒延迟在xamarin中不工作_C#_Xamarin_Xamarin.forms_Xamarin.android_Xamarin.ios - Fatal编程技术网

C# 设置2秒延迟在xamarin中不工作

C# 设置2秒延迟在xamarin中不工作,c#,xamarin,xamarin.forms,xamarin.android,xamarin.ios,C#,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我正在视图类中显示2秒的淡入淡出动画,2秒后,我想转到viewmodel类运行哪个加载登录页或注册页逻辑 现在它将跳过2秒动画并直接转到viewmodel。idk这里有什么问题 如果我删除行BindingContext=new SplashscreenViewModel()将显示动画,但它不会转到viewmodel类 public SplashscreenViewModel() { WhichPageToLoad(); } asy

我正在视图类中显示2秒的淡入淡出动画,2秒后,我想转到viewmodel类运行哪个加载登录页或注册页逻辑

现在它将跳过2秒动画并直接转到viewmodel。idk这里有什么问题

如果我删除行
BindingContext=new SplashscreenViewModel()将显示动画,但它不会转到viewmodel类

 public SplashscreenViewModel()
        {
            WhichPageToLoad();
        }
 
  async void WhichPageToLoad()
    {

            var getToken = await SecureStorage.GetAsync("Save_Pin_1");
            if(getToken == null)
            {
                var route = $"{ nameof(SignupPage)}";
                await Shell.Current.GoToAsync(route);
            }
            else
            {
                var route = $"{ nameof(LoginPage)}";
                await Shell.Current.GoToAsync(route);
            }
}
SplashscreenPage.xaml.cs-查看类

    public SplashscreenPage ()
    {
        InitializeComponent ();
        Animation();
        BindingContext = new SplashscreenViewModel();
    }

    async void Animation()
    {
        ssImage.Opacity = 0;
        await Task.WhenAll(
            ssImage.FadeTo(1, 2000),
            ssImage.ScaleTo(1.1, 2000)
            );
    }//end of method
Splashscreen-viewmodel类

 public SplashscreenViewModel()
        {
            WhichPageToLoad();
        }
 
  async void WhichPageToLoad()
    {

            var getToken = await SecureStorage.GetAsync("Save_Pin_1");
            if(getToken == null)
            {
                var route = $"{ nameof(SignupPage)}";
                await Shell.Current.GoToAsync(route);
            }
            else
            {
                var route = $"{ nameof(LoginPage)}";
                await Shell.Current.GoToAsync(route);
            }
}

拥有一个VM类或分配
BindingContext
是没有意义的,因为您没有进行任何数据绑定。您可以在动画完成后调用导航代码。您无法从构造函数进行异步调用,因此将动画和导航登录移动到出现的
OnAppearing
将允许您进行异步调用

public SplashscreenPage ()
{
    InitializeComponent ();
}

async override void OnAppearing()
{
    ssImage.Opacity = 0;

    await Task.WhenAll(
        ssImage.FadeTo(1, 2000),
        ssImage.ScaleTo(1.1, 2000)
        );

    var getToken = await SecureStorage.GetAsync("Save_Pin_1");
      
    if(getToken == null)
        {
            var route = $"{ nameof(SignupPage)}";
            await Shell.Current.GoToAsync(route);
        }
        else
        {
            var route = $"{ nameof(LoginPage)}";
            await Shell.Current.GoToAsync(route);
        }
}

我尝试将动画移动到viewmodel类,但我似乎无法在viewmodel类内部调用FadeTo并绑定到view类感谢@Jason。我正忙于将所有内容移动到viewmodel。。。。我忘了我可以移动到视图。你的解决方案对我有效