Привязка элементов управления WPF к данным в приложениях платформа .NET Framework

Примечание.

Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.

Вы можете отображать данные пользователям приложения, привязывая данные к элементам управления WPF. Чтобы создать эти элементы управления с привязкой к данным, можно перетащить элементы из окна "Источники данных" в конструктор WPF в Visual Studio. В этом разделе описываются некоторые из наиболее распространенных задач, инструментов и классов, которые можно использовать для создания приложений WPF, привязанных к данным.

Общие сведения о создании элементов управления с привязкой к данным в Visual Studio см. в разделе "Привязка элементов управления к данным" в Visual Studio. Дополнительные сведения о привязке данных WPF см. в обзоре привязки данных.

Задачи, решаемые в процессе привязки элементов управления WPF к данным

В следующей таблице перечислены задачи, которые можно выполнить путем перетаскивания элементов из окна источников данных в конструктор WPF.

Задача Дополнительные сведения
Создание новых элементов управления, связанных с данными

Привязка существующих элементов управления к данным
Привязка элементов управления WPF к набору данных
Создание элементов управления, отображающих связанные данные в иерархическом отношении: когда пользователь выбирает родительскую запись данных в одном элементе управления, другой элемент управления отображает связанные дочерние данные для выбранной записи Отображение связанных данных в приложениях WPF
Создание таблицы подстановки, которая отображает информацию из одной таблицы на основе значения в поле внешнего ключа в другой таблице. Создание таблиц подстановки в приложениях WPF
Привязка элемента управления к изображению в базе данных Привязка элементов управления к рисункам из базы данных

Допустимые места переноса

Элементы в окне источников данных можно перетащить только в допустимые целевые объекты удаления в конструкторе WPF. Имеется две основных разновидности допустимых конечных расположений сброса: контейнеры и элементы управления. Контейнер — это элемент пользовательского интерфейса, который обычно содержит элементы управления. Например, сетка является контейнером, равно как и окно.

Созданный язык XAML и код

При перетаскивании элемента из окна источников данных в конструктор WPF Visual Studio создает XAML, определяющий новый элемент управления с привязкой к данным (или привязывает существующий элемент управления к источнику данных). Для некоторых источников данных Visual Studio также создает код в файле программной части, который заполняет источник данных данными.

В следующей таблице перечислены XAML и код, создаваемые Visual Studio для каждого типа источника данных в окне "Источники данных".

Источник данных Создание языка XAML, который привязывает элемент управления к источнику данных Создание кода, который заполняет данными источник данных
Набор данных Да Да
Сущностная модель данных Да Да
Служба Да Нет
Object Да Нет

Наборы данных

При перетаскивании таблицы или столбца из окна источников данных в конструктор Visual Studio создает XAML, который выполняет следующие действия:

  • Добавление набора данных и нового CollectionViewSource в ресурсы контейнера, на который пользователь перетащил элемент. CollectionViewSource — это объект, который можно использовать для навигации и отображения данных в наборе данных.

  • Создание привязки данных для элемента управления. Если перетащить элемент на существующий элемент управления в конструкторе, язык XAML привязывает элемент управления к этому элементу. При перетаскивании элемента в контейнер XAML создает элемент управления, выбранный для перетаскиваемого элемента, и привязывает элемент управления к элементу. Элемент управления создается внутри нового Grid.

Кроме того, Visual Studio вносит следующие изменения в файл кода программной части:

  • Loaded Создает обработчик событий для элемента пользовательского интерфейса, содержащего элемент управления. Обработчик событий наполняет таблицу данными, извлекает CollectionViewSource из ресурсов контейнера, а затем делает первый элемент данных текущим элементом. Loaded Если обработчик событий уже существует, Visual Studio добавляет этот код в существующий обработчик событий.

Модели EDM

При перетаскивании сущности или свойства сущности из окна источников данных в конструктор Visual Studio создает XAML, который выполняет следующие действия:

  • Добавление нового CollectionViewSource в ресурсы контейнера, на который пользователь перетащил элемент. CollectionViewSource — это объект, который можно использовать для навигации и отображения данных в сущности.

  • Создание привязки данных для элемента управления. Если перетащить элемент на существующий элемент управления в конструкторе, язык XAML привязывает элемент управления к этому элементу. При перетаскивании элемента в контейнер XAML создает элемент управления, выбранный для перетаскиваемого элемента, и привязывает элемент управления к элементу. Элемент управления создается внутри нового Grid.

Кроме того, Visual Studio вносит следующие изменения в файл кода программной части:

  • Добавляет новый метод, который возвращает запрос для сущности, которую пользователь перетащил в конструктор (или сущности, содержащей свойство, которое пользователь перетащил в конструктор). Новый метод имеет имя Get<EntityName>Query, где \<EntityName> имя сущности.

  • Loaded Создает обработчик событий для элемента пользовательского интерфейса, содержащего элемент управления. Обработчик событий вызывает Get<EntityName>Query метод для заполнения сущности данными, извлекает CollectionViewSource данные из ресурсов контейнера, а затем делает первый элемент данных текущим элементом. Loaded Если обработчик событий уже существует, Visual Studio добавляет этот код в существующий обработчик событий.

Службы

При перетаскивании объекта или свойства службы из окна источников данных в конструктор Visual Studio создает xaml, который создает элемент управления с привязкой к данным (или привязывает существующий элемент управления к объекту или свойству). Однако Visual Studio не создает код, заполняющий объект службы прокси-сервера данными. Этот код придется написать самостоятельно. Пример, демонстрирующий, как это сделать, см. в разделе Привязка элементов управления WPF к службе данных WCF.

Visual Studio создает язык XAML, который выполняет следующие действия:

  • Добавление нового CollectionViewSource в ресурсы контейнера, на который пользователь перетащил элемент. CollectionViewSource — это объект, который можно использовать для навигации и отображения данных в объекте, возвращаемом службой.

  • Создание привязки данных для элемента управления. Если перетащить элемент на существующий элемент управления в конструкторе, язык XAML привязывает элемент управления к этому элементу. При перетаскивании элемента в контейнер XAML создает элемент управления, выбранный для перетаскиваемого элемента, и привязывает элемент управления к элементу. Элемент управления создается внутри нового Grid.

Объект

При перетаскивании объекта или свойства из окна источников данных в конструктор Visual Studio создает XAML, который создает элемент управления с привязкой к данным (или привязывает существующий элемент управления к объекту или свойству). Однако Visual Studio не создает код для заполнения объекта данными. Этот код придется написать самостоятельно.

Примечание.

Пользовательские классы должны быть общедоступными и по умолчанию имеют конструктор без параметров. Они не могут быть вложенными классами, имеющими "точку" в их синтаксисе. Дополнительные сведения см. в xaml и пользовательских классах для WPF.

Visual Studio создает язык XAML, который выполняет следующие действия:

  • Добавление нового CollectionViewSource в ресурсы контейнера, на который пользователь перетащил элемент. CollectionViewSource — это объект, который можно использовать для навигации и отображения данных в объекте.

  • Создание привязки данных для элемента управления. Если перетащить элемент на существующий элемент управления в конструкторе, язык XAML привязывает элемент управления к этому элементу. При перетаскивании элемента в контейнер XAML создает элемент управления, выбранный для перетаскиваемого элемента, и привязывает элемент управления к элементу. Элемент управления создается внутри нового Grid.

См. также