WPF - DataBinding Básico - Resumo de referência rápida


A seguir temos um resumo sobre o Binding usado em aplicações WPF que você pode usar como uma manual de referência rápida.

DataBinding

Para começar a usar o databinding com WPF você deve sempre definir um destino e uma origem.

O destino da ligação pode ser qualquer propriedade acessível ou elemento derivado da classe DependencyProperty. Um exemplo é a propriedade Text do controle TextBox.

O fluxo de dados na vinculação de dados ocorre de duas formas básicas :

  1. Unidirecional (OneWay) - A alteração é feita somente na origem; Somente a propriedade do objeto é alterada; a fonte de dados não é alterada;
  2. Bidirecinal (TwoWay) - A alteração é feita na origem e no destino, ou seja, a alteração da propriedade altera a fonte de dados;
  3. OneWayToSource: É o inverso do OneWay. O que você alterar a propriedade destino a propriedade origem é alterada. Ou seja uma alteração na interface se reflete na origem de dados;

DataBinding Básico - Exemplos comuns

DataBinding Básico - Exemplos comuns
{Binding} Realiza a vinculação ao DataContext atual
{Binding Name} Faz a vinculação a propriedade Name do DataContext atual
{Bindind Name.Length} Faz a ligação com a propriedade Length do objeto na propriedade Name do DataContext atual
{Binding ElementName=Nome_Elemento,Path=Text}   Faz a ligação com a propriedade Text do elemento XAML com nome igual a Nome_Elemento ou x:Name="Nome_Elemento"

Vinculação XML

O objeto XmlDataProvider permite Acessar aos dados XML declarativas para associação de dados.

XmlDataProvider expõe das seguintes maneiras para acessar dados XML:

  • Você pode incorporar dados usando a classe XmlDataProvider;
  • Você pode definir a propriedade Source para a URI uma arquivo de dados XML;
  • Você pode definir a propriedade Document para um XmlDocument;
A classe ObjectDataProvider envolve e cria um objeto que você pode usar como fonte de ligação de dados.

Há várias maneiras para criar um objeto para usar como uma fonte de ligação .Por exemplo, você pode criar o objeto na seção Recursos da página Linguagem de marcação de aplicativos extensível (XAML),ou você pode criar o objeto no código e defini-lo como DataContext.

Binding XML
{Binding Source={StaticResource BooksData} XPath=/books/book} Vincula o resultado da consulta XPath "/books/book" a partir do XML
no XmlDataProvider em um elemento "Resources" pai com x:Key="BooksData"
{Binding XPath=@name} Vincula ao resultado de uma consulta XPath executada em um nó XML no DataContext
(Ex: No DataTemplate ItemControl quando o ItemsControl.ItemsSource esta vinculado a uma fonte de dados XML.)

Binding de uma fonte relativa

Binding de uma fonte relativa (Relative Source)
{Binding RelativeSource={RelativeSource Self}} Vincula ao elemento Target
{Binding RelativeSource={RelativeSource Self},Path=Name} Faz a vinculação na propriedade Name do elemento Target
{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=Title} Vincula o título da janela Pai
{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}, AncestorLevel=2}, Path=Name} Vincula o nome do segundo pai do tipo ItemsControl
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Name} Dentro de um controle template, vincula a propriedade Name do elemento
{TemplateBinding Name} Atalho que pode ser usado para o item anterior

Binding Collection do item atual

Binding Collection do item atual
{Binding /} Vincula ao item atual no DataContext(quando o DataContext é uma coleção)
{Binding AllItems/} Vincula ao item atual na propriedade "AllItens" do DataContext
{Binding AllItems/Name} Vincula a propriedade "Name" do item atual na propriedade "AllItens" do DataContext

Lista das principais propriedades do Binding

Propriedade Descrição
BindsDirectlyToSource A usar uma classe DataSourceProvider derivada (por exemplo, um ObjectDataProvider) definindo essa
propriedade como true irá vincular o próprio objeto da fonte de dados; definindo como false a vinculação
será feita com os dados contidos na fonte de dados;
Converter Representa o conversor usado, normalmente você cria o conversor em um elemento pai de um elemento Resources e pode referenciá-lo usando um StatiResource{name} ou cria um conversor como um campo estático e faz referência a ele com {x:Static ns:class.field}
ConverteCulture A cultura passada para o conversor
ConverteParameter O parâmetro passado para o conversor
ElementName Nome do elemento, quando vincular a um elemento no mesmo escopo XAML. Não pode ser usado se RelativeSource ou fonte está definido.
FallBackValue Valor a ser usado quando a ligação encontra um erro
IsAsync Usar quando a propriedade get leva muito tempo para evitar o bloqueio do segmento da UI
Mode
  1. Unidirecional (OneWay) - A alteração é feita somente na origem; Somente a propriedade do objeto é alterada; a fonte de dados não é alterada;
  2. Bidirecinal (TwoWay) - A alteração é feita na origem e no destino, ou seja, a alteração da propriedade altera a fonte de dados;
  3. OneWayToSource: É o inverso do OneWay. O que você alterar a propriedade destino a propriedade origem é alterada. Ou seja uma alteração na interface se reflete na origem de dados;
  4. OneTime - Atualiza a propriedade Target somente quando a aplicação inicia ou quando o DataContext sofre alterações
NotifyOnSourceUpdated Dispara o evento SourceUpdated quando um valor é transferido da ligação de destino para a origem da ligação.
NotifyOnTargetUpdated Dispara o evento TargetUpdated quando um valor é transferido a partir da vinculação origem para o binding destino.
NotifyOnValidationError Dispara o erro attached no evento vinculado.
Path Propriedade Origem
UpdateSourceTrigger Opções:
  • Default - O valor padrão da UpdateSourceTrigger da propriedade destino de vinculação. O padrão é PropertyChanged, enquanto a propriedade Text é LostFocus.
  • PropertyChanged - Atualiza o binding source imediatamente sempre que a propriedade de vinculação destino muda;
  • LostFocus - Atualiza a vinculação origem sempre que o elemento de vinculação destino perde o foco;
  • Explicit - Atualiza a vinculação origem somente quando você chama o método UpdateSource
ValidationRules Coleção de regras que verifica a validade da entrada do usuário
XPath Consulta XPath que retorna o valor no XML de vinculação de origem

Nota: Por padrão, quando você usar ligação de dados e a propriedade destino for uma string, o WPF irá formatar o seu valor usando o formato da cultura US English Culture; para usar a configuração correta definida no painel de controle inclua o seguinte código antes de carregar qualquer GUI.

Exemplo:

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),new FrameworkPropertyMetadata( XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

Assim, apresentei este pequeno resumo de referência básica para consulta e para dar uma visão geral sobre o importante recurso do databinding.

"Dando graças ao Pai que nos fez idôneos para participar da herança dos santos na luz; O qual nos tirou da potestade das trevas, e nos transportou para o reino do Filho do seu amor;" Colossenses 13:14

Referências:


José Carlos Macoratti