Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Meu código quebrou com a mensagem abaixo, o que faço?

Mensagem de erro no exercício de ItemSelected: Unhandled Exception:

Xamarin.Forms.Xaml.XamlParseException: Position 12:15. Cannot assign property "ItemSelected": Property does not exists, or is not assignable, or mismatching type between value and property

4 respostas

Olá, Otoniel!

A propriedade ItemSelected existe no seu código? Se existe, cole aqui no fórum para darmos uma olhada. Obrigado!

solução!

Olá Marcelo. Na realidade SelectedItem! A inverter o nome recebi essa exceção:

Unhandled Exception:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.

Seguem os códigos: XAML da ListagemView:

<?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:TestDrive.Views"
             xmlns:vm="clr-namespace:TestDrive.ViewModels"
             Title="Test Drive"
             x:Class="TestDrive.Views.ListagemView">
    <ContentPage.BindingContext>
        <vm:ListagemViewModel></vm:ListagemViewModel>
    </ContentPage.BindingContext>
    <ListView x:Name="listViewVeiculos" ItemsSource="{Binding Veiculos}" Margin="25"
              SelectedItem="{Binding VeiculoSelecionado}">
                            <!--ItemTapped="listViewVeiculos_ItemTapped"-->

        <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}" FontSize="15" VerticalTextAlignment="Center"></Label>
                        </StackLayout>
                    </ViewCell.View>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>

    </ListView>

</ContentPage>

ListagemViewModel

namespace TestDrive.ViewModels
{
    public class ListagemViewModel
    {
        public List<Veiculo> Veiculos { get; set; }

        Veiculo veiculoSelecionado;
        public Veiculo VeiculoSelecionado
        {
            get { return veiculoSelecionado; }
            set { veiculoSelecionado = value;
                MessagingCenter.Send(veiculoSelecionado, "VeiculoSelecionado");
            }
        }

        public ListagemViewModel()
        {
            this.Veiculos = new ListagemVeiculos().Veiculos;
        }

    }
}

e o código quando eu compilei, com indicação de onde o código parou

namespace TestDrive.Views {


    [global::Xamarin.Forms.Xaml.XamlFilePathAttribute("C:\\Users\\otonieldelimafilho\\Documents\\Visual Studio 2017\\Projects\\App1\\App1\\App1\\" +
        "Views\\ListagemView.xaml")]
    public partial class ListagemView : global::Xamarin.Forms.ContentPage {

        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
        private global::Xamarin.Forms.ListView listViewVeiculos;

        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
        private void InitializeComponent() {
            global::Xamarin.Forms.Xaml.Extensions.LoadFromXaml(this, typeof(ListagemView));<<<<PAROU AQUI
            listViewVeiculos = global::Xamarin.Forms.NameScopeExtensions.FindByName<global::Xamarin.Forms.ListView>(this, "listViewVeiculos");
        }
    }
}

Agradeço toda a ajuda, já que empaquei aqui!

Abs

Otoniel

Não consegui descobri o problema, mas existem problemas que ocorrem quando a versão que foi implantada no emulador (ou celular) é diferente da versão do Visual Studio, então você pode fazer um teste:

  • Abra o emulador (ou o celular, se estiver usando)
    • Remova a aplicação "AluraCar", jogando-a na lixeira e confirmando a exclusão
    • Clique com botão direito sobre a solução, em seguida "Clean Solution"
    • Rode a aplicação novamente

A resposta estava na parte seguinte, com a sobrescrita do método OnAppearing(). Obrigado!