Привязка элементов управления WPF к набору данных в платформа .NET Framework приложениях
Примечание.
Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.
В этом пошаговом руководстве вы создадите приложение WPF, содержащее элементы управления с привязкой к данным. Эти элементы управления привязаны к записям продуктов, инкапсулированным в набор данных. Вы также добавляете кнопки для просмотра продуктов и сохранения изменений в записях продуктов.
В этом пошаговом руководстве рассматриваются следующие задачи:
Создание приложения WPF и набора данных, сформированного из данных в учебной базе данных AdventureWorksLT.
Создание набора привязанных к данным элементов управления посредством перетаскивания таблицы данных из окна Источники данных в окно в конструкторе WPF.
Создание кнопок для перехода вперед и назад по записям продуктов.
Создание кнопки для сохранения изменений, вносимых пользователем в записи продуктов, в таблице данных и базовом источнике данных.
Примечание.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в этой статье. Возможно, вы используете другой выпуск Visual Studio или разные параметры среды. Дополнительные сведения см. в разделе Персонализация среды IDE.
Необходимые компоненты
Для выполнения этого пошагового руководства требуются следующие компоненты:
Чтобы завершить работу с этим руководством, вам потребуется разработка классических приложений .NET и рабочие нагрузки хранения и обработки данных, установленные в Visual Studio. Чтобы установить их, откройте Visual Studio Installer и нажмите кнопку "Изменить" (или "Изменить>") рядом с версией Visual Studio, которую вы хотите изменить. См. раздел Изменение Visual Studio.
Доступ к запущенному экземпляру SQL Server или SQL Server Express с примером базы данных AdventureWorks Light (AdventureWorksLT), подключенной к ней. Чтобы скачать базу данных, см . примеры баз данных AdventureWorks.
Перед изучением приведенных ниже концепций будет полезно, хотя и не обязательно, ознакомиться со следующим пошаговым руководством.
Наборы данных и адаптеры таблицы. Дополнительные сведения см. в разделе "Средства набора данных" в Visual Studio и TableAdapters.
Привязка данных WPF. Более подробную информацию см. в разделе Общие сведения о связывании данных.
Создание проекта
Создайте проект WPF для отображения записей продуктов.
Откройте Visual Studio.
На начальном экране выберите Создать проект.
Найдите шаблон проекта приложения WPF на C# и выполните действия по созданию проекта, именуя проект AdventureWorksProductsEditor.
Visual Studio создает проект AdventureWorksProductsEditor.
Создание набора данных для приложения
Перед созданием элементов управления с привязкой к данным нужно определить модель данных для своего приложения и добавить ее в окно Источники данных. В данном пошаговом руководстве вы создадите набор данных для использования в качестве модели данных.
В меню Данные выберите команду Показать источники данных.
Открывается окно Источники данных.
В окне Источники данных выберите Добавить новый источник данных.
Открывается мастер настройки источника данных.
На странице "Выбор типа источника данных" выберите "База данных" и нажмите кнопку "Далее".
На странице "Выбор модели базы данных" выберите набор данных и нажмите кнопку "Далее".
На странице Выбор подключения к базе данных выберите один из следующих параметров:
Если подключение к образцу базы данных AdventureWorksLT доступно в раскрывающемся списке, выберите его и нажмите кнопку "Далее".
Щелкните Создать подключение и создайте подключение к базе данных AdventureWorksLT.
На странице "Сохранить строку подключения" на странице "Настройка файла приложения" выберите "Да", сохраните подключение в качестве флажка и нажмите кнопку "Далее".
На странице Выбор объектов базы данных разверните узел Таблицы и выберите таблицу Продукт (SalesLT).
Нажмите кнопку Готово.
Visual Studio добавляет новый
AdventureWorksLTDataSet.xsd
файл в проект и добавляет соответствующий элемент AdventureWorksLTDataSet в окно "Источники данных". ФайлAdventureWorksLTDataSet.xsd
определяет типизированный набор данных с именемAdventureWorksLTDataSet
и именемProductTableAdapter
TableAdapter. Позднее в рамках данного пошагового руководства вы воспользуетесьProductTableAdapter
для заполнения набора данных данными и сохранения изменений в базу данных.Выполните сборку проекта.
Изменение метода заполнения по умолчанию tableAdapter
Чтобы заполнить набор данных данными, используйте метод Fill
объекта ProductTableAdapter
. По умолчанию метод Fill
заполняет ProductDataTable
в AdventureWorksLTDataSet
со всеми строками данных из таблицы продукта. Вы можете изменить этот метод, чтобы он возвращал только подмножество строк. В рамках данного руководства измените метод Fill
для возврата только строк для продуктов с фотографиями.
В обозревателе решений дважды щелкните файл AdventureWorksLTDataSet.xsd.
Открывается Конструктор наборов данных.
В этом конструкторе щелкните запрос Fill, GetData() правой кнопкой мыши и выберите пункт Настроить.
Открывается Мастер настройки адаптера таблицы.
На странице "Ввод инструкции SQL" добавьте следующее
WHERE
предложение послеSELECT
инструкции в текстовом поле.WHERE ThumbnailPhotoFileName <> 'no_image_available_small.gif'
Нажмите кнопку Готово.
Определение пользовательского интерфейса
Добавьте несколько кнопок в окно, изменив в XAML в Конструкторе WPF. Позднее в рамках данного пошагового руководства вы добавите код, позволяющий пользователям выполнять прокрутку и сохранять изменения записей продуктов с помощью этих кнопок.
В обозревателе решений дважды щелкните файл MainWindow.xaml.
Окно открывается в конструкторе WPF.
В представлении XAML конструктора добавьте следующий код между тегами
<Grid>
:<Grid.RowDefinitions> <RowDefinition Height="75" /> <RowDefinition Height="625" /> </Grid.RowDefinitions> <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75"><</Button> <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">></Button> <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>
Выполните сборку проекта.
Создание элементов управления с привязкой к данным
Создайте элементы управления, отображающие записи клиентов, перетаскивая таблицу Product
из окна источников данных в конструктор WPF.
В окне "Источники данных" щелкните раскрывающееся меню узла "Продукт" и выберите "Сведения".
Разверните узел Product.
В этом примере некоторые поля не будут отображаться, поэтому щелкните раскрывающееся меню рядом со следующими узлами и выберите "Нет".
ИДКатегорииПродукта
ИДМоделиПродукта
ThumbnailPhotoFileName
rowguid
ModifiedDate
Щелкните раскрывающееся меню рядом с узлом ThumbNailPhoto и выберите "Изображение".
Примечание.
По умолчанию у элементов в окне Источники данных, представляющих изображения, для элемента управления по умолчанию задано значение Нет. Это вызвано тем, что изображения хранятся в базах данных в виде байтовых массивов, которые могут содержать все — от простого массива байтов до исполняемого файла или большого приложения.
Из окна Источники данных перетащите узел Product на строку сетки под строкой с кнопками.
Visual Studio создает XAML, который определяет набор элементов управления, привязанных к данным в таблице Products. Также создается код, который загружает эти данные. Дополнительные сведения о созданном XAML и коде см. в разделе Привязка элементов управления WPF к данным в Visual Studio.
Щелкните в конструкторе текстовое поле рядом с меткой Идентификатор продукта.
В окне "Свойства" установите флажок рядом со свойством IsReadOnly.
Навигация по записям продукта
Добавьте код, позволяющий пользователям выполнять прокрутку записей продуктов с помощью кнопок < и >.
В конструкторе дважды щелкните кнопку < на поверхности окна.
Visual Studio открывает файл кода программной части и создает обработчик событий
backButton_Click
для события Click.Измените обработчик событий
Window_Loaded
, чтобыProductViewSource
,AdventureWorksLTDataSet
иAdventureWorksLTDataSetProductTableAdapter
находились за рамками метода и были доступны всей форме. Объявите их только для глобальной формы и назначьте их в обработчикеWindow_Loaded
событий следующим образом:private AdventureWorksProductsEditor.AdventureWorksLTDataSet AdventureWorksLTDataSet; private AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter adventureWorksLTDataSetProductTableAdapter; private System.Windows.Data.CollectionViewSource productViewSource; private void Window_Loaded(object sender, RoutedEventArgs e) { AdventureWorksLTDataSet = ((AdventureWorksProductsEditor.AdventureWorksLTDataSet)(this.FindResource("adventureWorksLTDataSet"))); // Load data into the table Product. You can modify this code as needed. adventureWorksLTDataSetProductTableAdapter = new AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter(); adventureWorksLTDataSetProductTableAdapter.Fill(AdventureWorksLTDataSet.Product); productViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("productViewSource"))); productViewSource.View.MoveCurrentToFirst(); }
Добавьте следующий код в обработчик событий
backButton_Click
.Вернитесь в конструктор и дважды щелкните кнопку >.
Добавьте следующий код в обработчик событий
nextButton_Click
.
Сохранение изменений в записях продукта
Добавьте код, позволяющий пользователям сохранять изменения в записях продуктов с помощью кнопки Сохранить изменения.
В конструкторе дважды щелкните кнопку Сохранить изменения.
Visual Studio открывает файл кода программной части и создает обработчик событий
saveButton_Click
для события Click.Добавьте следующий код в обработчик событий
saveButton_Click
.Примечание.
В этом примере для сохранения изменений используется метод
Save
объектаTableAdapter
. В данном пошаговом руководстве это целесообразно, так как изменяется только одна таблица данных. Если необходимо сохранить изменения нескольких таблиц, можно воспользоваться методомUpdateAll
объектаTableAdapterManager
, который Visual Studio создает вместе с вашим набором данных. Дополнительные сведения см. в разделе TableAdapters.
Тестирование приложения
Выполните сборку приложения и запустите его. Убедитесь, что вы можете просмотреть и обновить записи продуктов.
Нажмите клавишу F5.
Выполняется сборка и запуск приложения. Проверьте выполнение следующих условий.
Текстовые поля отображают данные из первой записи продукта с фотографией. Этот продукт имеет идентификатор 713 и имя Long-Sleeve Logo Jersey, S.
Вы можете нажать кнопку > или < для перехода по другим записям продуктов.
В одной из записей продукта измените значение "Размер ", а затем нажмите кнопку "Сохранить изменения".
Закройте приложение и перезапустите его, нажав клавишу F5 в Visual Studio.
Перейдите к измененной записи продукта и убедитесь, что изменения сохранены.
Закройте приложение.
Следующие шаги
После выполнения этого пошагового руководства можно попробовать следующие связанные задачи:
Узнайте, как использовать окно Источники данных в Visual Studio для привязки элементов управления WPF к другим типам источников данных. Дополнительные сведения см. в разделе "Привязка элементов управления WPF к службе данных WCF".
Узнайте, как использовать окно Источники данных в Visual Studio для отображения связанных данных (то есть данных в отношении "родитель — потомок") в элементах управления WPF. Дополнительные сведения см. в пошаговом руководстве. Отображение связанных данных в приложении WPF.