none
MVVM - BINDING de propridades do tipo objeto complexo RRS feed

  • Pergunta

  • Bom dia pessoal,
    Estou desenvolvendo uma aplicação em WPF da qual adotei o padrão MVVM onde estou tendo que linkar minhas entidades na view para que interaja com a model pela viewmodel.
    
    
    Estou utilizando o comando {Binding NOMEPROPRIEDADE, UpdateSourceTrigger=PropertyChanged} para linkar objetos como por exemplo CLIENTE.NOMEPROPRIEDADE.
    
    Até ai está funcionando. O problema acontece quando tenho objetos complexos como por exemplo CLIENTE.CONTATO.TELEFONE.NUMERO
    
    Com base no comando que funciona tentei utilizar {Binding CONTATO.TELEFONE.NUMERO, UpdateSourceTrigger=PropertyChanged}
    
    mas não funcionou.
    
    Tudo que achei na net foi com relação a binds de propriedades simples.
    
    Alguém teria uma dica de como efetuar o bind de classes complexas como esta?
    
    obrigado



    Alexandre Cardoso

    • Editado agpcardoso segunda-feira, 20 de junho de 2011 21:48 DIFICIL DELER
    segunda-feira, 20 de junho de 2011 21:46

Respostas

  • O ViewModel está aí para isso: por que você não cria uma propriedade no ViewModel que expõe o número de telefone?

    public string NumeroTelefone
    {
       get { return Contato.Telefone.Numero; }
       set 
       {
          Contato.Telefone.Numero = value;
          RaisePropertyChanged("NumeroTelefone");
       }
    }

    Bruno


    MVP Client Development - http://msmvps.com/blogs/bsonnino Twitter @bsonnino
    terça-feira, 21 de junho de 2011 07:48
  •  

    Olá Bruno obrigado pela reposta
    
    No caso das propriedades CONTATO.TELEFONE.NUMERO eu citei só para exemplificar.
    
    Em todo caso consegui resolver meu problema apenas incluindo a tag path, segue abaixo:
    
    {Binding Path=CONTATO.TELEFONE.NUMERO, UpdateSourceTrigger=PropertyChanged}


     


    Alexandre Cardoso
    • Editado agpcardoso terça-feira, 21 de junho de 2011 13:17 texto errado
    • Marcado como Resposta agpcardoso terça-feira, 21 de junho de 2011 13:17
    • Não Marcado como Resposta agpcardoso terça-feira, 21 de junho de 2011 13:18
    • Marcado como Resposta AndreAlvesLimaModerator terça-feira, 21 de junho de 2011 14:12
    terça-feira, 21 de junho de 2011 13:16

Todas as Respostas

  • O ViewModel está aí para isso: por que você não cria uma propriedade no ViewModel que expõe o número de telefone?

    public string NumeroTelefone
    {
       get { return Contato.Telefone.Numero; }
       set 
       {
          Contato.Telefone.Numero = value;
          RaisePropertyChanged("NumeroTelefone");
       }
    }

    Bruno


    MVP Client Development - http://msmvps.com/blogs/bsonnino Twitter @bsonnino
    terça-feira, 21 de junho de 2011 07:48
  •  

    Olá Bruno obrigado pela reposta
    
    No caso das propriedades CONTATO.TELEFONE.NUMERO eu citei só para exemplificar.
    
    Em todo caso consegui resolver meu problema apenas incluindo a tag path, segue abaixo:
    
    {Binding Path=CONTATO.TELEFONE.NUMERO, UpdateSourceTrigger=PropertyChanged}


     


    Alexandre Cardoso
    • Editado agpcardoso terça-feira, 21 de junho de 2011 13:17 texto errado
    • Marcado como Resposta agpcardoso terça-feira, 21 de junho de 2011 13:17
    • Não Marcado como Resposta agpcardoso terça-feira, 21 de junho de 2011 13:18
    • Marcado como Resposta AndreAlvesLimaModerator terça-feira, 21 de junho de 2011 14:12
    terça-feira, 21 de junho de 2011 13:16