Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Mudar de SelectedItem para ItemTapped(ou qualquer outro)

Tentei mudar de SelectedItem para ItemTapped e executar o programa, mais aparece um erro no código xaml. que tipo de alteração eu teria que fazer pro itemtapped funcionar corretamente, ou qualquer outro?

ListagemView.xaml

<ListView x:Name="listViewVeiculos" 
                  ItemsSource="{Binding Veiculos}" 
                  ItemTapped="{Binding VeiculoSelecionado}" <-----------
                  HasUnevenRows="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.View>
                            <StackLayout Margin="0,5,0,5"  Orientation="Horizontal">
                                <Label Text="{Binding Nome}" FontSize="20" VerticalOptions="Center"></Label>
                            </StackLayout>
                        </ViewCell.View>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

ListagemView.xaml.cs

protected override void OnAppearing()
        {
            base.OnAppearing();
            AssinarMensagems();

            this.ViewModel.GetVeiculos();
        }

        protected override void OnDisappearing()
        {
            base.OnDisappearing();
            CancelarAssinatura();
        }

        private void AssinarMensagems()
        {
            MessagingCenter.Subscribe<Veiculo>(this, "VeiculoSelecionado",
                            (veiculo) =>
                            {
                                Navigation.PushAsync(new DetalheView(veiculo, usuario));
                            });
        }

        private void CancelarAssinatura()
        {
            MessagingCenter.Unsubscribe<Veiculo>(this, "VeiculoSelecionado");
        }

ListagemViewModel

Veiculo veiculoSelecionado;

        public Veiculo VeiculoSelecionado
        {
            get
            {
                return veiculoSelecionado;
            }
            set
            {
                veiculoSelecionado = value;
                if(value!=null)
                    MessagingCenter.Send(veiculoSelecionado, "VeiculoSelecionado");
            }
        }
1 resposta
solução!

Voce precisa vincular uma acão ao ItemTapped e não um Atributo.


<ListView x:Name="listViewVeiculos" 
                  ItemsSource="{Binding Veiculos}" 
                   ItemTapped="AcaoItemTapped" <-----------
                  HasUnevenRows="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.View>
                            <StackLayout Margin="0,5,0,5"  Orientation="Horizontal">
                                <Label Text="{Binding Nome}" FontSize="20" VerticalOptions="Center"></Label>
                            </StackLayout>
                        </ViewCell.View>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>



private async void AcaoItemTapped(object sender, ItemTappedEventArgs e)
 {
        //Faz Alguma coisa
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software