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 :
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:
|
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 |
|
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:
|
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: