Estou fazendo um app, para ir treinando o que aprendi no curso...
No caso, eu coloquei um activityindicator no xaml da tela de login, porém ele não aparece quando clico no botão de login.
Meu código:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="UniApp.View.LoginView"
BackgroundColor="Yellow">
<StackLayout VerticalOptions="Center">
<ActivityIndicator IsVisible="{Binding Aguardar}" IsRunning="{Binding Aguardar}">
</ActivityIndicator>
<Label Text="UniApp" TextColor="Black" FontSize="35" HorizontalOptions="Fill" HorizontalTextAlignment="Center"></Label>
<Frame OutlineColor="Yellow" Margin="15" VerticalOptions="CenterAndExpand">
<StackLayout Orientation="Vertical">
<!-- Usuário -->
<StackLayout Orientation="Vertical">
<Label Text="Matrícula:" HorizontalOptions="Center"></Label>
<Entry Text="{Binding Matricula}"></Entry>
</StackLayout>
<!-- Senha -->
<StackLayout>
<Label Text="Senha:" HorizontalOptions="Center"></Label>
<Entry Text="{Binding Senha}" IsPassword="True"></Entry>
</StackLayout>
</StackLayout>
</Frame>
<Button Text="Entrar" HorizontalOptions="Fill" TextColor="White" BackgroundColor="Black" Command="{Binding FazerLoginCommand}"></Button>
</StackLayout>
</ContentPage>
public class LoginViewModel : BaseViewModel
{
private string matricula;
private string senha;
private bool aguardar;
public ICommand FazerLoginCommand { get; private set; }
public string Matricula
{
get { return matricula; }
set
{
matricula = value;
((Command)FazerLoginCommand).ChangeCanExecute();
}
}
public string Senha
{
get { return senha; }
set
{
senha = value;
((Command)FazerLoginCommand).ChangeCanExecute();
}
}
public bool Aguardar
{
get { return aguardar; }
set
{
aguardar = value;
OnPropertyChanged();
}
}
public LoginViewModel()
{
FazerLoginCommand = new Command(() =>
{
var oLoginService = new LoginService();
var oLogin = new Login(this.matricula, this.senha);
var oUsuario = oLoginService.FazerLogin(oLogin);
this.Aguardar = true;
DateTime t = DateTime.Now;
DateTime tf = DateTime.Now.AddSeconds(3);
while (t < tf)
{
t = DateTime.Now;
}
// Login efetuado com sucesso
if (oUsuario.Inexistente == false)
MessagingCenter.Send<Usuario>(oUsuario, "SucessoLogin");
else
MessagingCenter.Send<LoginException>(new LoginException("Usuário ou senha incorretos!"), "FalhaLogin");
this.Aguardar = false;
},
() =>
{
return !string.IsNullOrEmpty(matricula) && !string.IsNullOrEmpty(senha);
}
);
}
}
Minha BaseViewModel é a mesma do curso, por isso não incluirei aqui.
Alguma sugestão?