Olá. Depois de fazer a faturação do código e selecionar um veículo, logo após de instanciar o "DetalheViewModel" (assim que sai do construtor), da o seguinte erro:
Unhandled Exception:
System.Reflection.TargetInvocationException: ocorreu
public DetalheView(Veiculo pVeiculo, Usuario pUsuario)
{
InitializeComponent();
this.Veiculo = pVeiculo ?? new Veiculo();
//this.Title = pVeiculo.Nome;
this.Usuario = pUsuario;
this.BindingContext = new DetalheViewModel(pVeiculo);
}
public DetalheViewModel(Veiculo pVeiculo)
{
this.Veiculo = pVeiculo ?? new Veiculo();
this.ProximoCommand = new Command(() =>
{
MessagingCenter.Send<Veiculo>(pVeiculo, "Proximo");
});
}
Eu baixei o projeto da aula e comparei com o meu projeto os arquivos DetalheView.xaml, DetalheView.xaml.cs e o DetalheViewModel.cs mas não achei nenhuma divergência. Os dados do usuário e do veículo estão sendo passados até lá.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="App1.Views.DetalheView"
Title="{Binding Veiculo.Nome}">
<StackLayout Padding="15">
<TableView Intent="Settings">
<TableRoot>
<TableSection Title="Acessórios">
<SwitchCell Text="{Binding TextoFreioABS}" On="{Binding TemFreio, Mode=TwoWay}" />
<SwitchCell Text="{Binding TextoArCondicionado}" On="{Binding TemAr, Mode=TwoWay}" />
<SwitchCell Text="{Binding TextoMp3Player}" On="{Binding TemMp3, Mode=TwoWay}" />
<TextCell Text="{Binding ValorTotal, Mode=TwoWay}" />
</TableSection>
</TableRoot>
</TableView>
<Button x:Name="buttonProximo" Text="Próximo"
Command="{Binding ProximoCommand}"
VerticalOptions="End"></Button>
</StackLayout>
</ContentPage>
#region Propriedades
#region Públicas
public Veiculo Veiculo { get; set; }
public string TextoFreioABS
{
get
{
return string.Format("Freio ABS - R$ {0}", Veiculo.FREIO_ABS_VALOR);
}
}
public string TextoArCondicionado
{
get
{
return string.Format("Ar Condicionado - R$ {0}", Veiculo.AR_CONDICIONADO_VALOR);
}
}
public string TextoMp3Player
{
get
{
return string.Format("MP3 Player - R$ {0}", Veiculo.MP3_PLAYER_VALOR);
}
}
public bool TemFreio
{
get { return Veiculo.TemFreioABS; }
set { Veiculo.TemFreioABS = value; OnPropertyChanged(); OnPropertyChanged(nameof(ValorTotal)); }
}
public bool TemAr
{
get { return Veiculo.TemAr; }
set { Veiculo.TemAr = value; OnPropertyChanged(); OnPropertyChanged(nameof(ValorTotal)); }
}
public bool TemMp3
{
get { return Veiculo.TemMp3Player; }
set { Veiculo.TemMp3Player = value; OnPropertyChanged(); OnPropertyChanged(nameof(ValorTotal)); }
}
public string ValorTotal
{
get
{
return Veiculo.PrecoTotalFormatado;
}
}
//public event PropertyChangedEventHandler PropertyChanged;
public ICommand ProximoCommand { get; set; }
#endregion
#endregion
#region Construtor
public DetalheViewModel(Veiculo pVeiculo)
{
this.Veiculo = pVeiculo ?? new Veiculo();
this.ProximoCommand = new Command(() =>
{
MessagingCenter.Send<Veiculo>(pVeiculo, "Proximo");
});
}
#endregion
Desde já agradeço a ajuda