3
respostas

Condicional de strings

Bom dia, queria sabe se tem como fazer o que vc fez na aula 04 "Binding On, SwitchCell, TwoWay e OnPropertyChanged", só que com string.

Em vez de ter um valor e ir incrementando ele toda vez que ele for acionado no switch cell, queria fazer ele incrementa uma string toda vez que ele que ele for declarado como true na listagem. um exemplo é se TemFreioABS TemArCondicionado e TemMP3Player forem true iria gerar uma string:

"Freio ABS, ArCondicionado , MP3Player"

ou seTemFreioABS TemArCondicionado forem true e TemMP3Player for false gerar uma string:

"Freio ABS, ArCondicionado "

3 respostas

Olá, Alexander

Fiz um teste, modificando a propriedade PrecoTotalFormatado na classe Veiculo.cs, e funcionou sem problemas:

        public string PrecoTotalFormatado
        {
            get
            {
                //return string.Format("Valor Total: R$ {0}",
                //    Preco
                //    + (TemFreioABS ? FREIO_ABS : 0)
                //    + (TemArCondicionado ? AR_CONDICIONADO : 0)
                //    + (TemMP3Player ? MP3_PLAYER : 0)
                //    );

                List<string> acessorios = new List<string>();
                if (TemFreioABS)
                {
                    acessorios.Add("Freio ABS");
                }
                if (TemArCondicionado)
                {
                    acessorios.Add("Ar Condicionado");
                }
                if (TemMP3Player)
                {
                    acessorios.Add("MP3 Player");
                }
                return string.Join(", ", acessorios);
            }
        }

Mas não se esqueça de mudar o nome da propriedade PrecoTotalFormatado para um nome diferente. Ou melhor ainda, implemente uma segunda propriedade para exibir essa lista de acessórios separada por vírgulas.

eu implementei

string peças;
                foreach(string peça in acessorios)
                {
                    peças += peça + ", ";
                    peças = peça.TrimEnd(',') + ".";

                }

ficou assim:

public string Acessorios
{
    get
    {
        List<string> acessorios = new List<string>();
        if (TemFreioABS)
        {
            acessorios.Add("Freio ABS");
        }
        if (TemArCondicionado)
        {
            acessorios.Add("Ar Condicionado");
        }
        if (TemMP3Player)
        {
            acessorios.Add("MP3 Player");
        }
        string peças;
        foreach (string peça in acssorios)
        {
            peças += Ppeça + ", ";
            ipeças = peça.TrimEnd(',') + ".";

        }
        return peças;
    }
}

mas estou com dificuldade em exibir essa string na listagem

public ListagemView()
        {
            InitializeComponent();

            this.Veiculos = new List<Veiculo>()
            {
                new Veiculo { nome = "Azera V6", preco = 85000 , 
 TemFreioABS=true,temArCondicionado=true,temMP3Player=false,Acessorios},
                new Veiculo { nome = "Onix 1.6", preco = 35000
 ,TemFreioABS=true,temArCondicionado=true,temMP3Player=true,Acessorios},
            };

            this.BindingContext = this;
        }

Entendi, você quer exibir os acessórios na listagem de veículos. O problema é que a aplicação não está salvando essas informações no veículo. Mesmo que você coloque propriedade Acessorios da classe Veiculo, essa informação vai ser perdida quando sair de uma view de detalhes para a view de listagem. Então teria que gravar os acessórios do veículo em banco de dados, para só depois recuperar o veículo com os acessórios que você escolheu. Mais pra frente no curso (na parte 4) você vai ver como gravar e recuperar informações do banco de dados, aí poderemos pensar em alguma solução para isso.