Привязка данных Xamarin.FormsXamarin.Forms Data Binding

Скачать пример Скачать примерDownload Sample Download the sample

Привязка данных — это способ связывания свойств двух объектов так, чтобы изменения в одном свойстве автоматически отражались в другом. Привязка данных — неотъемлемая часть архитектуры приложения Model-View-ViewModel (MVVM).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.

Проблема связывания данныхThe Data Linking Problem

Приложение Xamarin.Forms состоит из одной страницы или нескольких, каждая из которых обычно содержит множество объектов пользовательского интерфейса — представлений.A Xamarin.Forms application consists of one or more pages, each of which generally contains multiple user-interface objects called views. Одна из основных задач программы — обеспечить синхронизацию этих представлений и отслеживать разные значения или элементы выбора, которые они представляют.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. Часто представления являются значениями из базового источника данных. Пользователь управляет этими представлениями для изменения данных.Often the views represent values from an underlying data source, and the user manipulates these views to change that data. При изменении представления эти изменения должны отобразиться в базовых данных. Аналогично при изменении базовых данных изменение должно быть отражено в представлении.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.

Чтобы успешно выполнить эту задачу, программу следует уведомить об изменениях в представлениях или базовых данных.To handle this job successfully, the program must be notified of changes in these views or the underlying data. Распространенное решение — задать события, которые сигнализируют об изменении.The common solution is to define events that signal when a change occurs. После можно установить обработчик событий, который будет получать уведомления об этих изменениях.An event handler can then be installed that is notified of these changes. В качестве ответа он передает данные из одного объекта в другой.It responds by transferring data from one object to another. Однако если представлений много, обработчиков событий тоже должно быть много, из-за чего объем кода увеличивается.However, when there are many views, there must also be many event handlers, and a lot of code gets involved.

Решение привязки данныхThe Data Binding Solution

Привязка данных автоматизирует эту задачу и устраняет необходимость в обработчиках событий.Data binding automates this job, and renders the event handlers unnecessary. (Сами события все еще нужны, так как они используются в инфраструктуре привязки данных.) Привязки данных можно реализовать в коде или XAML. Чаще они встречаются в XAML, где помогают уменьшить размер файла с выделенным кодом.(The events are still necessary, however, because the data-binding infrastructure uses them.) 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. При замене процедурного кода в обработчиках событий на декларативный или язык разметки приложение упрощается и становится более удобочитаемым.By replacing procedural code in event handlers with declarative code or markup, the application is simplified and clarified.

Один из двух объектов, который используется в привязке данных, почти всегда является элементом, полученным из View и формирует часть визуального интерфейса страницы.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. Другой объект является:The other object is either:

  • другим производным классом View, который обычно находится на той же странице;Another View derivative, usually on the same page.
  • объектом в файле кода.An object in a code file.

В демонстрационных программах, как в примере DataBindingDemos привязки данных между двумя производными классами View часто показываются для упрощения и удобочитаемости.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. Однако те же принципы можно применить к привязкам данных между View и другими объектами.However, the same principles can be applied to data bindings between a View and other objects. Когда приложение создается с помощью архитектуры Model-View-ViewModel (MVVM), класс с базовыми данными часто называется ViewModel.When an application is built using the Model-View-ViewModel (MVVM) architecture, the class with underlying data is often called a ViewModel.

Привязки данных изучаются в следующей серии статей:Data bindings are explored in the following series of articles:

Основные привязкиBasic Bindings

Вы узнаете разницу межу целевым и исходным объектом привязки данных, а также увидите простые примеры привязок в коде и XAML.Learn the difference between the data binding target and source, and see simple data bindings in code and XAML.

Режим привязкиBinding Mode

Вы узнаете, как режим привязки может управлять потоком данных между двумя объектами.Discover how the binding mode can control the flow of data between the two objects.

Форматирование строкиString Formatting

Использование привязки данных для форматирования и отображения объектов в виде строк.Use a data binding to format and display objects as strings.

Путь привязкиBinding Path

Подробное изучение свойства Path привязки данных для получения доступа к вложенным свойствам и коллекции участников.Dive deeper into the Path property of the data binding to access sub-properties and collection members.

Привязка преобразователей значенийBinding Value Converters

Использование преобразователей значений привязок для изменения значений в привязке данных.Use binding value converters to alter values within the data binding.

Привязка резервных значенийBinding Fallbacks

Повышение надежности привязок данных с помощью определения значений отката, которые будут использоваться при сбое привязки.Make data bindings more robust by defining fallback values to use if the binding process fails.

Командный интерфейсThe Command Interface

Реализация свойства Command с привязками данных.Implement the Command property with data bindings.

Скомпилированные привязкиCompiled Bindings

Использование скомпилированных привязок для повышения их производительности.Use compiled bindings to improve data binding performance.