1
resposta

Problema com o SelectedItem e com os Command Xamarin, não avança para a próxima pagina do APP.

Estou fazendo o curso de Xamarin 2, e quando fiz a implantação do SelectedItem e dos Commands não funcionou, já tentei mudar a versão do Xamarin e testar com versões de Android diferentes, porém sem sucesso!!

Estou usando o Visual Studio 2017, e estou rodando os testes no Live Play do Xamarin.

Abaixo os Meu Código.

VIEW

<?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:Xamarim.Alura"
             xmlns:vm="clr-namespace:Xamarim.Alura.ViewModels"
             Title="Teste Drive"
             x:Class="Xamarim.Alura.View.ListagemView">
    <ContentPage.BindingContext>
        <vm:ListagemViewModel></vm:ListagemViewModel>
    </ContentPage.BindingContext>
    <ListView x:Name="listViewVeiculos" 
                  ItemsSource="{Binding Veiculos}"
              SelectedItem="{Binding VeiculoSelecionado}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <ViewCell.View>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="{Binding Nome}" FontSize="20" VerticalTextAlignment="Center"></Label>
                            <Label Text="-" FontSize="20" VerticalTextAlignment="Center"></Label>
                            <Label Text="{Binding PrecoFormatado}" FontAttributes="Bold" FontSize="20" VerticalTextAlignment="Center"></Label>
                        </StackLayout>
                    </ViewCell.View>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage>

VIEW - CS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarim.Alura.View;
using Xamarim.Alura.Models;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace Xamarim.Alura.View
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class ListagemView : ContentPage
    {
        public ListagemView()
        {
            InitializeComponent();
        }


        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");
        }

    }

}

ViewModelCS

using System;
using System.Collections.Generic;
using System.Text;
using Xamarim.Alura.Models;
using Xamarin.Forms;

namespace Xamarim.Alura.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;
        }
    }
}
1 resposta

Olá, Isac, vamos por partes

Por favor coloque um breakpoint nesta linha:

veiculoSelecionado = value;

Quando roda a aplicação, ela para neste ponto?