首页 > 解决方案 > Xamarin Forms:从按钮和 onAppearing 使用相同的命令不起作用

问题描述

我正在尝试在启动应用程序时自动登录用户。因此,我在 ViewModel 中创建了以下命令:

public Command LoginCommand { get; private set; }

public LoginViewModel()
{
    LoginCommand = new Command(async () => await Login());
}

XAML 代码如下所示:

<Button Text="Login" Command="{Binding LoginCommand}" Style="{StaticResource LoginButton}"/>

因此,只要我不在相应页面的 onAppearing 方法中使用 Bindingcontext 的相同命令,这就会很好地工作:

protected override async void OnAppearing()
{
    base.OnAppearing();
    if (LoginVM.AutoLogin)
    {
        LoginVM.LoginCommand.Execute(null);
    }
}

发生的情况是,一旦页面出现,登录过程就会正确执行。但是,如果登录失败(例如由于超时),如果我再次单击登录按钮,则不会发生任何事情

有趣的是,如果我向按钮添加“Clicked”事件处理程序并从那里手动执行 LoginCommand,它就可以工作。

有人能告诉我,为什么代码会这样吗?

非常感谢您!

标签: xamarincommand

解决方案


推荐阅读