Boa noite,
Utilizando o Padrão MVVM, percebi que o código realmente pode ser melhor utilizado, assim como realizadas com facilidade as manutenções quando necessárias.
Ao mesmo, na ViewModel existem as propriedades que serão utilizadas pelo BindingContext, assim como Eventos/Comandos e outras particularidades. Essas propriedades já existem em uma classe Model. No exemplo abaixo, consideremos a Classe Model "Agendamento":
public class Agendamento {
public Veiculo Veiculo { get; set; }
public string Nome { get; set; }
public string Fone { get; set; }
public string Email { get; set; }
DateTime dataAgendamento = DateTime.Today;
public DateTime DataAgendamento {
get {
return dataAgendamento;
}
set {
dataAgendamento = value;
}
}
public TimeSpan HoraAgendamento { get; set; }
}
Agora, um trecho da Classe AgendamentoViewModel:
public class AgendamentoViewModel : BaseViewModel {
const string URL_POST_AGENDAMENTO = "https://aluracar.herokuapp.com/salvaragendamento";
public Agendamento Agendamento { get; set; }
public Veiculo Veiculo {
get {
return Agendamento.Veiculo;
}
set {
Agendamento.Veiculo = value;
}
}
public string Nome {
get {
return Agendamento.Nome;
}
set {
Agendamento.Nome = value;
OnPropertyChanged();
((Command)AgendarCommand).ChangeCanExecute();
}
}
public string Fone {
get {
return Agendamento.Fone;
}
set {
Agendamento.Fone = value;
OnPropertyChanged();
((Command)AgendarCommand).ChangeCanExecute();
}
}
public string Email {
get {
return Agendamento.Email;
}
set {
Agendamento.Email = value;
OnPropertyChanged();
((Command)AgendarCommand).ChangeCanExecute();
}
}
public DateTime DataAgendamento {
get {
return Agendamento.DataAgendamento;
}
set {
Agendamento.DataAgendamento = value;
}
}
public TimeSpan HoraAgendamento {
get {
return Agendamento.HoraAgendamento;
}
set {
Agendamento.HoraAgendamento = value;
}
}
Reparei que na ViewModel apenas foram ajustadas os Get/Set, contudo as propriedades são as mesmas da Classe Model. Gostaria de entender o porquê foram novamente inseridos nesse escopo.
Obrigado, Abs.