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

App não "Avança" para próxima página

Eu estava tentando "reproduzir" o aplicativo aluracar, mais com um contexto diferente pra exercitar um pouco. Eu reproduzi a primeira parte do aplicativo "Listagem" , e aparentemente deu tudo certo, só que quando eu seleciono uma opção pra avançar para a próxima página , ele não avança, só fica com a opção selecionada

<?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:AppGourmet"
             xmlns:vm="clr-namespace:AppGourmet.ViewModels"
             Title="Lanches"
             x:Class="AppGourmet.Views.ListagemView">

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

    <ListView x:Name="ListViewPratos"
              Margin="25"
              ItemsSource="{Binding Pratos}"
              SelectedItem="{Binding PratoSelecionado}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <ViewCell.View>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="{Binding Nome}"></Label>
                            <Label Text="{Binding Preco}"></Label>
                        </StackLayout>
                    </ViewCell.View>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ContentPage>
namespace AppGourmet.Views
{
    public partial class ListagemView : ContentPage
    {
        public ListagemView()
        {
            InitializeComponent();
        }


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

            MessagingCenter.Subscribe<Pratos>(this, "PratoSelecionado", 
                (msg) =>
                {
                    Navigation.PushAsync(new AdicionaisView(msg));
                });
        }

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

            MessagingCenter.Unsubscribe<Pratos>(this, "PratoSelecionado");
        }

    }
}
namespace AppGourmet.ViewModels
{
    public class ListagemViewModel
    {
        public List<Pratos> Pratos { get; set; }

        Pratos pratosSelecionado;

        public Pratos PratosSelecionado
        {
            get
            {
                return pratosSelecionado;
            }
            set
            {
                pratosSelecionado = value;
                if (value != null)
                    MessagingCenter.Send(pratosSelecionado, "PratoSelecionado");
            }
        }

        public ListagemViewModel()
        {
            this.Pratos = new ListagemPratos().Pratos;
        }
    }
}

A Segunda Página

namespace AppGourmet.Models
{
    public class ListagemPratos
    {
        public List<Pratos> Pratos { get; private set; }

        public List<Ingredientes> Ingredientes { get; private set; }

        public List<Ingredientes> Adicionais { get; private set; }

        public ListagemPratos()
        {
            this.Pratos = new List<Pratos>()
            {
                new Pratos { Nome = "X-Burger", Preco = 10},
                new Pratos { Nome = "X-Bacon", Preco = 13 },
                new Pratos { Nome = "X-EggBacon", Preco = 14 },
                new Pratos { Nome = "X-Tudo", Preco = 16 },
                new Pratos { Nome = "X-Cheddar", Preco = 19 },
            };
        }
    }
}
namespace AppGourmet.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class AdicionaisView : ContentPage
    {
        public Pratos Pratos { get; set; }

        public AdicionaisView(Pratos pratos)
        {
            InitializeComponent();
            this.Pratos = pratos;
            this.BindingContext = new AdicionaisView(pratos);
        }


    }
}
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="AppGourmet.Views.AdicionaisView">
    <ContentPage.Content>
        <StackLayout>
            <Label Text="Welcome to Xamarin Forms!" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
1 resposta
solução!

Olá, Alexander!

Existe uma diferença entre o nome da propriedade "PratosSelecionado" (com um "s" no meio) e o binding "PratoSelecionado", por isso o mecanismo de binding do Xamarin não consegue acessar a propriedade especificada:

SelectedItem="{Binding PratoSelecionado}">
public Pratos PratosSelecionado