Контексты данных и источники данных

b этот интерфейс необходим для

Класс CustomersCollection Из листинга Б.2 является производным от класса 0BservableCollection<T>, В котором предусмотрена реализация интерфейса INotifyCollectionChanged. Этот интерфейс необходим для синхронизации нескольких элементов управления, привязанных к коллекции, и по своим функциям похож на событие ListChanged Интерфейса IBindingList. Поскольку интерфейс INotifyCollectionChanged Появился только в WinFx, существующие классы коллекций и наборов данных. NET Framework не поддерживают в полной мере возможности привязки данных для элементов управления WinFx. Для привязки данных можно использовать любую коллекцию, которая поддерживает по меньшей мере интерфейс LEnumerable, Позволяющий коду привязки в WinFx выполнять итерацию по объектам коллекции и представлять извлекаемые из них значения при помощи объектов Bind. Можно также использовать отдельные объекты, если контекст данных будет осуществлять привязку только элементов управления с единственным значением. Источник данных устанавливается через свойство DataContext Любого элемента на уровне приложения, окна или любого дочернего элемента управления. Повторим, что когда происходит привязка данных, любые привязанные элементы управления используют для своей привязки контекст данных ближайшего родителя, у которого он установлен. Свойство DataContext Объявляется в классе FrameworkElement И имеет тип System.Object, Что позволяет устанавливать его на любой объект. Для привязки данных с более мощными функциями, такими, как возможность редактирования данных в привязанных объектах, обнаружения изменений в коллекции, когда они производятся другим элементом управления или программным кодом, или возможность сортировать и фильтровать коллекцию данных, вам потребуются объекты и коллекция данных, которые поддерживают целый ряд интерфейсов, подобных тем, что обсуждались в главе 7. Вполне возможно, что ко времени выпуска WinFx эти интерфейсы сильно изменятся, поэтому я не буду здесь вдаваться в обсуждение их деталей. Наиболее мощной коллекцией для размещения ваших объектов на сегодняшний день является класс ObservableCollection<T>, Входящий в пространство имен System.Windows.Data. Будем надеяться, что к моменту появления WinFx на рынке классы DataView И другие обобщенные классы коллекций будут поддерживать необходимые интерфейсы, позволяющие использовать широкие возможности привязки данных в WinFx.