Skip navigation

O mecanismo de DataBinding, não é novo já existe há algum tempo, mais diferente do mecanismo de DataBinding tradicional, dentro da arquitetura WPF o DataBinding traz alguns recursos diferenciados e que tornam o mesmo, um mecanismo extremamente poderoso, eficaz e que tem papel muito importante na Arquitetura WPF e na construção de aplicativos com esta tecnologia. Neste primeiro artigo estaremos apresentando em detalhes, como tirar proveito deste recursos extremamente poderoso.

     O DataBinding no WPF, entre muitas outras coisas, dispõe de propriedades que tem suporte nativo ao binding, uma representação flexível de dados para o usuário, permite classificar, filtrar e além destas características permite uma clara separação da lógica de negócios da interface com o usuário.
 
O DataBinding

    A definição de databinding é simples: “é  o processo de conectar o aplicativo de interface com o usuário a lógica de negócios”. Embora seja simples esta definição, realizar esta conexão envolve tarefas como validação, conexão com a fonte de dados, apresentação correta e organizada das informações para uma melhor visualização. E uma grande vantagem do binding dentro do WPF, é que ele traz uma vasta gama de propriedades e fontes de dados que podem ser utilizadas nas aplicações.  Vamos começar a entender melhor como este mecanismo funciona. Observe a figura abaixo:

 
A figura acima ilustra o processo de databinding. Veja que é simples, porém muito poderoso o mecanismo de binding. Vamos cmeçar a identificar as peças dentro deste processo. Sempre existirá um objeto fonte( Source ) e um objeto alvo( Target ). Independente do alvo ou fonte o mecanismo de binding sempre seguirá o esquema ilustrado acima.     O mecanismo de binding é composto além dos objetos de fonte e destino, por mais dois outros elementos, que são a propriedade de destino e um caminho para o valor no objeto fonte( source ) para uso, totalizando ao todo quatro elementos. Observe a figura abaixo:
 

 

Identificando na figura acima:
1º Objeto utilizado como fonte de dados( Source ).
2º Objeto de alvo( Target ).
3º Propriedade que terá seu valor utilizado pelo objeto de alvo( Target ), ou seja, o valor desta propriedade é o Path, ou, o caminho em que se encontra o valor a ser utilizado.
4º Propriedade de destino( Target ), ou seja, a propriedade que receberá o valor da propriedade do objeto utilizado como fonte de dados.
 
    Estes quatro elementos, são as peças chaves do mecanismo de binding. Os objetos podem até ser alvos e fontes diferentes, mais de qualquer maneira eles sempre irão se enquadrar neste mecanismo: Objeto Fonte( Source ), Objeto alvo( Target ), propriedade fonte e propriedade de destino.
 
O DataBinding e a direção do fluxo dos dados
 

     Um dos diferenciais do binding na arquitetura WPF é a maneira como o fluxo de dados trafega entre o alvo ( Target ) e o Fonte ( source ). O fluxo de dados pode ser OneWay, TwoWay e OneWayToSource. Observe a figura abaixo.

 

 

O fato de existir diversas formas de direcionar o fluxo dos dados, se deve ao fato das necessidades que existem de comunicação do usuário e a fonte de dados. Você pode, por exemplo, desejar que o usuário ao realizar uma atualização, venha propagar a mesma para a fonte de dados, ou objeto que é a fonte de dados somente atualiza o objeto alvo e não deseja ser notificada se o usuário realiza uma alteração, enfim de acordo com a necessidade, você especifica como será a direção do fluxo de dados. Veja a descrição abaixo de cada uma das formas de trafegar o fluxo de dados;

 

OneWay – Faz com que a propriedade de origem( source ) atualize automaticamente a propriedade de destino( target ), mais não notifica a propriedade de origem caso haja uma atualização na propriedade de destino.

TwoWay- Faz com que tanto a propriedade de origem( source ) ou destino( target ), sejam notificadas caso haja uma alteração em uma ou outra. Este tipo de fluxo de dados é indicado para cenários mais iterativos, quando existe uma necessidade de que atualizações sejam refletidas automaticamentes, ou seja, na fonte( source ) ou no destino(target) que pode ser, um formulário por exemplo. 

OneWayToSource-É o inverso do OneWay, permitindo somente que a propriedade de destino( Target ) atualize a propriedade fonte( Source ).

OneTime –  Embora não ilustrada acima, o OneTime é utilizado quando vc deseja inicializar a propriedade de destino, mais qualquer atualização posterior não seja refletida. Podemos dizer que o OneTime, é um OneWay mais simples.

 

     Você pode especificar o tipo de fluxo de dados, através da propriedade Mode da classe Binding:

<Bnding Mode=OneWay />

 

O que faz propagar a atualização da fonte

 

     Agora que entendemos como funciona o fluxo dos dados entre a fonte e o destino, precisamos saber o que faz desencadear esta atualização ou estas notificações de mudança.

    Os fluxos OneWayToSource e TwoWay, escutam mudanças na propriedade de destino(target) e propagam até a fonte de dados(source), isto é chamado de atualização da fonte. Mais como se dá esta atualização? É simples a propriedade UpdateSourceTrigger da classe Binding, é responsável por específicar como irá ocorrer esta notificação. Observe a figura abaixo: O fato de existir diversas formas de direcionar o fluxo dos dados, se deve ao fato das necessidades que existem de comunicação do usuário e a fonte de dados. Você pode, por exemplo, desejar que o usuário ao realizar uma atualização, venha propagar a mesma para a fonte de dados, ou objeto que é a fonte de dados somente atualiza o objeto alvo e não deseja ser notificada se o usuário realiza uma alteração, enfim de acordo com a necessidade, você especifica como será a direção do fluxo de dados. Veja a descrição abaixo de cada uma das formas de trafegar o fluxo de dados;

 

OneWay – Faz com que a propriedade de origem( source ) atualize automaticamente a propriedade de destino( target ), mais não notifica a propriedade de origem caso haja uma atualização na propriedade de destino.

TwoWay- Faz com que tanto a propriedade de origem( source ) ou destino( target ), sejam notificadas caso haja uma alteração em uma ou outra. Este tipo de fluxo de dados é indicado para cenários mais iterativos, quando existe uma necessidade de que atualizações sejam refletidas automaticamentes, ou seja, na fonte( source ) ou no destino(target) que pode ser, um formulário por exemplo. 

OneWayToSource-É o inverso do OneWay, permitindo somente que a propriedade de destino( Target ) atualize a propriedade fonte( Source ).

OneTime –  Embora não ilustrada acima, o OneTime é utilizado quando vc deseja inicializar a propriedade de destino, mais qualquer atualização posterior não seja refletida. Podemos dizer que o OneTime, é um OneWay mais simples.

 

     Você pode especificar o tipo de fluxo de dados, através da propriedade Mode da classe Binding:

<Bnding Mode=OneWay />

 

O que faz propagar a atualização da fonte

 

     Agora que entendemos como funciona o fluxo dos dados entre a fonte e o destino, precisamos saber o que faz desencadear esta atualização ou estas notificações de mudança.

    Os fluxos OneWayToSource e TwoWay, escutam mudanças na propriedade de destino(target) e propagam até a fonte de dados(source), isto é chamado de atualização da fonte. Mais como se dá esta atualização? É simples a propriedade UpdateSourceTrigger da classe Binding, é responsável por específicar como irá ocorrer esta notificação. Observe a figura abaixo:

Se o valor da propriedade UpdateSourceTrigger for PropertyChanged, a fonte( source ) é atualizado caso haja mudança na propriedade de destino( Target ). Se o valor e UpdateSourceTrigger for LostFocus,  a fonte é atualizado com o novo valor, assim que a propriedade de destino( Target ) perde o foco.     Bom pessoal, neste primeiro artigo de 2 que serão feitos sobre o binding, aprendemos o conceito do binding, a direção do fluxo de dados, como é desencadeada a atualização da fonte de dados e tivemos uma pequena introdução sobre esta importante funcionalidade do WPF. Mais fiquem ligados ainda temos que aprender sobre como criar o binding, binding com coleções, validação enfim tem muita coisa boa por vir. Abraços e até o próximo artigo.

 

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.