设置 2 秒延迟在 xamarin 中不起作用
Setting 2 second delay not working in xamarin
我在视图 class 中显示 2 秒淡入淡出动画,2 秒后,我想转到视图模型 class 到 运行 加载登录页面或注册页面逻辑
现在它跳过 2 秒动画并直接进入视图模型。我知道这是什么问题
如果我删除第 BindingContext = new SplashscreenViewModel();
行,则会显示动画,但不会进入视图模型 class
SplashscreenPage.xaml.cs - 查看 class
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
启动画面 - 视图模型class
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 class 或分配 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);
}
}
我在视图 class 中显示 2 秒淡入淡出动画,2 秒后,我想转到视图模型 class 到 运行 加载登录页面或注册页面逻辑
现在它跳过 2 秒动画并直接进入视图模型。我知道这是什么问题
如果我删除第 BindingContext = new SplashscreenViewModel();
行,则会显示动画,但不会进入视图模型 class
SplashscreenPage.xaml.cs - 查看 class
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
启动画面 - 视图模型class
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 class 或分配 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);
}
}