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

Dúvida sobre o bindingContext

Boa noite, reparei aqui que na ListagemView.xaml, para estabelecer qual é o bindingContext da tela, foi feito da seguinte forma:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:TestDrive"
             xmlns:vm="clr-namespace:TestDrive.ViewModels"
             x:Class="TestDrive.Views.ListagemView"
             Title="Test Drive">

    <!-- xmlns:vm vai dizer ao xaml onde estão meus viewmodels -->
    <!-- ContentPage.BindingContext vai dizer qual classe é o meu viewmodel -->
    <ContentPage.BindingContext>
        <vm:ListagemViewModel></vm:ListagemViewModel>
    </ContentPage.BindingContext>
resto do código...

nas outras telas, manteve como era antes do MVVM e na propriedade this.BindingContext simplesmente se passou um objeto do ViewModel.

Fiz o teste na ListagemView, removendo o código que colei acima e mantendo da forma "antiga", com o this.BindingContext = new ListagemViewModel();

Funcionou igual...

Alguma razão especial para fazer da forma onde se diz o bindingContext no arquivo .xaml?

1 resposta
solução!

Olá, José Guilherme

Este trecho:

    <ContentPage.BindingContext>
        <vm:ListagemViewModel></vm:ListagemViewModel>
    </ContentPage.BindingContext>

Faz exatamente o mesmo que este:

this.BindingContext = new ListagemViewModel();

Fizemos essas duas variações apenas para mostrar como é possível declarar uma instância no XAML e usar essa instância para preencher uma propriedade da página (propriedade ContentPage.BindingContext).