WPF e databind de coleções de objetos

Um dos objetivos do WPF, além de melhorar o apelo visual de um sistema, é separar a lógica de negócio envolvida da camada de interface, permanecendo na interface sua própria lógica de apresentação.

Para mim, lógica de apresentação são requisitos como: “se o saldo da conta for negativo, o valor deve ser apresentado em vermelho”, e lógica de negócio é a rotina que vai calcular o saldo da conta.

Pensando nisso comecei um pequeno exemplo. Nele temos uma classe Pessoa e seu DAO. Para o exemplo estou o utilizando o db4o, inspirado no artigo do Luciano Lima, na última edição da revista mundo NET . Na figura 1 vemos a representação gráfica das classes.

figura 1

Nossa aplicação será uma agenda. Sua interface será construída em WPF, acessando os objetos da classe Pessoa acima.

O desafio

Vamos listar as pessoas cadastradas em um listbox, que é um controle muito versátil dentro do WPF. Para listar uma coleção de objetos descobri que manter a interface atualizada sempre que a fonte mudar, essa fonte deve implementar INotifyPropertyChanged. O que isso quer dizer ?

Através da classe DAO nós vamos obter a lista de pessoas, essa é nossa fonte, o listbox será nossa interface. Veja que o método getPessoas() retorna List<Pessoas>, como fazer o List implementar INotifyPropertyChanged ? E se vc não tem acesso aos fontes da classe de negócio, você é apenas o “cara” que desenvolve a interface.

A resposta

Como diz o jargão… “seus problemas acabaram”… o WPF oferece a classe ObservableCollection, que já implementa as peculiaridades de INotifyProprertyChanged. Na nossa aplicação WPF vamos “transformar” os dados de List<Pessoa> para ObservableCollection<Pessoa>, mas isso fica para o próximo post….

Até lá

PS.: Eu não sou nenhum guru de WPF e .NET não, apenas gosto de compartilhar o que aprendo…

Esse post foi publicado em WPF. Bookmark o link permanente.

Uma resposta para WPF e databind de coleções de objetos

  1. gerpx disse:

    Interesting sample! Would you like to share this sample with the db4o community? Many beginners could benefit from your example (even if you\’re not an expert, that doesn\’t matter).If you are interested you may reach me via this e-mail:german [[[@]]]] db4o [[[.]]] com(of course, you need to remove the brackets)Best regards and thanks!!!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s