Meu SelectedItem
não está funcionando. O comando não chega no ListagemViewModel quando clico em em algum item da tela. Baixei o projeto do professor e está acontecendo a mesma coisa. O que pode ser?
Segue meu código XAML:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:XamarinCapitulo1"
xmlns:vm="clr-namespace:XamarinCapitulo1.ViewModels"
x:Class="XamarinCapitulo1.Views.ListagemView"
Title="Teste Drive">
<ContentPage.BindingContext>
<vm:ListagemViewModel></vm:ListagemViewModel>
</ContentPage.BindingContext>
<ListView x:Name="listViewVeiculos" ItemsSource="{Binding Veiculos}" Margin="25" SelectedItem="{Binding VeiculoSelecionado}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Nome}" FontSize="20" VerticalTextAlignment="Center"></Label>
<Label Text=" - " VerticalTextAlignment="Center"></Label>
<Label Text="{Binding PrecoFormatado}" FontAttributes="Bold" VerticalTextAlignment="Center"></Label>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
Code behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using XamarinCapitulo1.Models;
namespace XamarinCapitulo1.Views
{
public partial class ListagemView : ContentPage
{
public ListagemView()
{
InitializeComponent();
//this.BindingContext = this;
}
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Subscribe<Veiculo>(this, "VeiculoSelecionado",
(msg) =>
{
Navigation.PushAsync(new DetalheView(msg));
});
}
protected override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<Veiculo>(this, "VeiculoSelecionado");
}
}
}
ViewModel
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using XamarinCapitulo1.Models;
namespace XamarinCapitulo1.ViewModels
{
public class ListagemViewModel
{
public List<Veiculo> Veiculos { get; set; }
Veiculo veiculoSelecionado;
public Veiculo VeiculoSelecionado
{
get
{
return veiculoSelecionado;
}
set
{
veiculoSelecionado = value;
if (value != null)
{
MessagingCenter.Send(veiculoSelecionado, "VeiculoSelecionado");
}
}
}
public ListagemViewModel()
{
this.Veiculos = new ListagemVeiculos().Veiculos;
}
}
}