:::no-loc(Xamarin.Forms)::: Associação de dados:::no-loc(Xamarin.Forms)::: Data Binding

Baixar Exemplo Baixar o exemploDownload Sample Download the sample

A vinculação de dados é a técnica de vincular propriedades de dois objetos para que as alterações em uma propriedade sejam refletidas automaticamente na outra propriedade. A vinculação de dados é parte integrante da arquitetura do aplicativo MVVM (Model-View-ViewModel).Data binding is the technique of linking properties of two objects so that changes in one property are automatically reflected in the other property. Data binding is an integral part of the Model-View-ViewModel (MVVM) application architecture.

O problema de associação de dadosThe Data Linking Problem

Um :::no-loc(Xamarin.Forms)::: aplicativo consiste em uma ou mais páginas, cada uma delas geralmente contém vários objetos de interface do usuário chamados exibições.A :::no-loc(Xamarin.Forms)::: application consists of one or more pages, each of which generally contains multiple user-interface objects called views. Uma das principais tarefas do programa é manter essas exibições sincronizadas e controlar os diversos valores ou seleções que elas representam.One of the primary tasks of the program is to keep these views synchronized, and to keep track of the various values or selections that they represent. Muitas vezes as exibições representam valores de uma fonte de dados subjacente, e o usuário manipula essas exibições para alterar esses dados.Often the views represent values from an underlying data source, and the user manipulates these views to change that data. Quando a exibição é alterada, os dados subjacentes devem refletir essa alteração e, da mesma forma, quando os dados subjacentes são alterados, essa alteração deve ser refletida na exibição.When the view changes, the underlying data must reflect that change, and similarly, when the underlying data changes, that change must be reflected in the view.

Para que esse trabalho seja realizado com êxito, o programa deve ser notificado das alterações nessas exibições ou nos dados subjacentes.To handle this job successfully, the program must be notified of changes in these views or the underlying data. A solução comum é definir eventos que sinalizam quando uma alteração ocorre.The common solution is to define events that signal when a change occurs. É possível então instalar um manipulador de eventos que é notificado sobre essas alterações.An event handler can then be installed that is notified of these changes. Ele responde transferindo dados de um objeto para outro.It responds by transferring data from one object to another. No entanto, quando há muitas exibições, também é preciso que haja vários manipuladores de eventos, e há muito código envolvido.However, when there are many views, there must also be many event handlers, and a lot of code gets involved.

A solução de associação de dadosThe Data Binding Solution

A associação de dados automatiza esse trabalho e torna os manipuladores de eventos desnecessários.Data binding automates this job, and renders the event handlers unnecessary. Associações de dados podem ser implementadas no código ou em XAML, mas são muito mais comuns em XAML, em que elas ajudam a reduzir o tamanho do arquivo code-behind.Data bindings can be implemented either in code or in XAML, but they are much more common in XAML where they help to reduce the size of the code-behind file. Substituindo o código procedural em manipuladores de eventos por marcação ou código declarativo, o aplicativo é simplificado e esclarecido.By replacing procedural code in event handlers with declarative code or markup, the application is simplified and clarified.

Um dos dois objetos envolvidos em uma associação de dados quase sempre é um elemento derivado de View e que faz parte da interface visual de uma página.One of the two objects involved in a data binding is almost always an element that derives from View and forms part of the visual interface of a page. O outro objeto é uma das seguintes opções:The other object is either:

  • Outro derivado de View, geralmente na mesma página.Another View derivative, usually on the same page.
  • Um objeto em um arquivo de código.An object in a code file.

Em programas de demonstração, tais como aqueles na amostra DataBindingDemos, associações de dados entre dois derivados de View geralmente são mostrados para fins de clareza e simplicidade.In demonstration programs such as those in the DataBindingDemos sample, data bindings between two View derivatives are often shown for purposes of clarity and simplicity. No entanto, os mesmos princípios podem ser aplicados às associações de dados entre um View e outros objetos.However, the same principles can be applied to data bindings between a View and other objects. Quando um aplicativo é criado usando a arquitetura MVVM (Model-View-ViewModel), a classe com dados subjacentes geralmente é chamada de ViewModel.When an application is built using the Model-View-ViewModel (MVVM) architecture, the class with underlying data is often called a viewmodel.

Associações de dados são exploradas na seguinte série de artigos:Data bindings are explored in the following series of articles:

Associações básicasBasic Bindings

Aprenda a diferença entre a origem e o destino da associação de dados e veja associações de dados simples em código e em XAML.Learn the difference between the data binding target and source, and see simple data bindings in code and XAML.

Modo de associaçãoBinding Mode

Descubra como o modo de associação pode controlar o fluxo de dados entre os dois objetos.Discover how the binding mode can control the flow of data between the two objects.

Formação de cadeia de caracteresString Formatting

Use uma associação de dados para formatar e exibir objetos como cadeias de caracteres.Use a data binding to format and display objects as strings.

Caminho de associaçãoBinding Path

Aprofunde-se na propriedade Path da associação de dados para acessar subpropriedades e os membros da coleção.Dive deeper into the Path property of the data binding to access sub-properties and collection members.

Associação de conversores de valorBinding Value Converters

Use conversores de valor de associação para alterar os valores dentro da associação de dados.Use binding value converters to alter values within the data binding.

Associações relativasRelative Bindings

Use associações relativas para definir a origem da associação em relação à posição do destino da associação.Use relative bindings to set the binding source relative to the position of the binding target.

Associação de fallbacksBinding Fallbacks

Torne as associações de dados mais robustas definindo valores de fallback que deverão ser usados se o processo de associação falhar.Make data bindings more robust by defining fallback values to use if the binding process fails.

Associações múltiplasMulti-Bindings

Anexe uma coleção de Binding objetos a uma única propriedade de destino de associação.Attach a collection of Binding objects to a single binding target property.

A interface de comandoThe Command Interface

Implemente a propriedade Command com associações de dados.Implement the Command property with data bindings.

Associações compiladasCompiled Bindings

Use associações compiladas para melhorar o desempenho de associação de dados.Use compiled bindings to improve data binding performance.