ComicReader X – Parte 6. DataBinding I

O WPF oferece um mecanismo de databinding espetacular e com alguns recursos muito interessantes. Devido a isso vou dividir o assunto DataBinding em partes.

Parte I

Uma das características legais, é o conceito de DataContext. DataContext nada mais é do que uma propriedade que existe em qualquer FrameWorkElement e que permite que os controles herdem, de seu parent, a fonte de dados. Um DataContext pode ser ligado diretamente a um objeto CLR ou a um DataSource Provider. Para entender melhor isso imagine a situação onde você possui um Window e esse Windows possui alguns TextBox inseridos nele. Ao se definir que o o DataContext do Window é por exemplo a classe Produto, não é mais necessário indicar o DataContext daqueles TextBox. Eles, por estarem dentro da hierquia do Window, entendem que devem herdar o DataContext de Window, caso outro não seja especificado. Sim, você também pode especificar outros objetos como DataContext, como já citei, cada FrameWorkElement possui a propriedade DataContext.

Como definir um DataContext

Podemos fazê-lo diretamente via XAML:

<Window.Resources>
   <src:ListaProdutos x:Key="Lista"/>
</Window.Resources>
.
.
<DockPanel DataContext="{Binding Source {StaticResource Lista}}">
.
.

E também é possivel fazer isso no code-behind:

List<Produto> Lista := Repository<Produto>.GetAll();
DockPanel.DataContext = Lista;

No ComicReader é feito da seguinte forma:

 

A direção de um Databind

O que isso significa? isso quer dizer como os dados serão atualizados, se for alterado na UI será passado ou não para o datasource.

  • O WPF oferece as seguintes possibilidades, que são definida como Binding.Mode:
  • OneWay: Ideal para situação de "somente-leitura". O que é alterado na UI não é repassado para o source.
  • TwoWay: Tando o source como a UI se atualizam. idieal para edições. Caso o source sofra alteração por alguma rotina interna do sistema, e não pela intervenção do usuário junto à UI, a UI será atualizada.
  • OnTime: O valor contido no source é utilizado para inicializar a UI. Caso o source sofra alguma alteração em seu conteúdo, a UI não é atualizada. É como se fosse algo estático. Mas se por exemplo o Source em si é alterado, por exemplo um nova instância é passada, aí sim a UI reflete a alteração.
  • OneWayToSource: É o inverso do OneWay. O que vc alterar na UI vai para o source.

Por hoje é só. Quero deixar estes posts sempre pequenos assim, para faciliar a leitura. Na parte II veremos como implementar o TwoWay de  maneira eficaz e quando que a notificação de mudança de dados é disparada.

Até lá.

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

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