Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Классы DataSet и связанные классы являются устаревшими технологиями .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти, пока приложения отключены от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных являются проверенными успешными технологиями, рекомендуемый подход для новых приложений .NET заключается в использовании Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой интерфейс программирования.
В этом пошаговом руководстве вы создадите приложение WPF, содержащее элементы управления с привязкой к данным. Элементы управления привязаны к записям продуктов, инкапсулированным в наборе данных. Вы также добавляете кнопки для просмотра продуктов и сохранения изменений в записях продуктов.
В этом пошаговом руководстве рассматриваются следующие задачи:
Создание приложения WPF и набора данных, созданного из данных в примере базы данных AdventureWorksLT.
Создание набора элементов управления с привязкой к данным путем перетаскивания таблицы данных из окна источников данных в окно в конструктор WPF.
Создание кнопок, которые перемещаются вперед и назад по записям о продукте.
Создание кнопки, которая сохраняет изменения, которые пользователи вносят в записи продукта в таблицу данных и базовый источник данных.
Замечание
Инструкции в этой статье иллюстрируют последнюю версию интерактивного интерфейса разработки (IDE), доступную в Visual Studio. На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса. Вы можете использовать другую версию Visual Studio или разные параметры среды. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
Предпосылки
Для выполнения этого пошагового руководства требуются следующие компоненты:
Чтобы пройти это руководство, вам потребуются рабочие компоненты для разработки приложений для настольных ПК на .NET и хранения и обработки данных, установленные в Visual Studio. Чтобы установить их, откройте Установщик Visual Studio и выберите Изменить (или Дополнительно>Изменить) рядом с версией Visual Studio, которую вы хотите изменить. См. изменения в Visual Studio.
Доступ к запущенному экземпляру SQL Server или SQL Server Express с примером базы данных AdventureWorks Light (AdventureWorksLT), подключенной к ней. Чтобы скачать базу данных, см. примеры баз данных AdventureWorks.
Предыдущие знания о следующих понятиях также полезны, но не требуются для выполнения пошагового руководства.
Наборы данных и TableAdapters. Дополнительные сведения см. в разделе "Средства набора данных" в Visual Studio и TableAdapters.
Привязка данных WPF. Дополнительные сведения см. в обзоре привязки данных .
Создание проекта
Создайте проект WPF для отображения записей продуктов.
Откройте Visual Studio.
В окне запуска выберите Создать проект.
Найдите шаблон проекта приложения WPF на C# и выполните действия по созданию проекта, именуя проект AdventureWorksProductsEditor.
Visual Studio создает проект AdventureWorksProductsEditor.
Создание набора данных для приложения
Прежде чем создавать элементы управления с привязкой к данным, необходимо определить модель данных для приложения и добавить ее в окно источников данных . В этом пошаговом руководстве вы создадите набор данных для использования в качестве модели данных.
В меню "Данные " щелкните "Показать источники данных".
Откроется окно "Источники данных ".
В окне Источники данных щелкните Добавить новый источник данных.
Откроется мастер настройки источника данных .
На странице "Выбор типа источника данных " выберите "База данных" и нажмите кнопку "Далее".
На странице "Выбор модели базы данных " выберите набор данных и нажмите кнопку "Далее".
На странице "Выбор подключения к данным" выберите один из следующих вариантов:
Если подключение к образцу базы данных AdventureWorksLT доступно в раскрывающемся списке, выберите его и нажмите кнопку "Далее".
Щелкните "Создать подключение" и создайте подключение к базе данных AdventureWorksLT.
На странице "Сохранение строки подключения в файл настройки приложения" установите флажок "Да, сохранить подключение как", а затем нажмите "Далее".
На странице "Выбор объектов базы данных" разверните таблицы и выберите таблицу Product (SalesLT).
Нажмите кнопку Готово.
Visual Studio добавляет новый
AdventureWorksLTDataSet.xsd
файл в проект и добавляет соответствующий элемент AdventureWorksLTDataSet в окно "Источники данных ". ФайлAdventureWorksLTDataSet.xsd
определяет типизированный набор данных с именемAdventureWorksLTDataSet
и TableAdapter с именемProductTableAdapter
. Далее в этом пошаговом руководстве вы будете использоватьProductTableAdapter
для заполнения набора данных и сохранения изменений обратно в базу данных.Создайте проект.
Редактирование метода заполнения по умолчанию для TableAdapter
Чтобы заполнить набор данных, используйте метод Fill
из ProductTableAdapter
. По умолчанию метод Fill
заполняет AdventureWorksLTDataSet
в ProductDataTable
всеми строками данных из таблицы Product. Этот метод можно изменить, чтобы вернуть только подмножество строк. В этом пошаговом руководстве измените Fill
метод, чтобы возвращать только строки для продуктов с фотографиями.
В обозревателе решений дважды щелкните файл AdventureWorksLTDataSet.xsd .
Откроется конструктор наборов данных.
В конструкторе щелкните правой кнопкой мыши запрос Fill, GetData() и выберите "Настроить".
Откроется мастер настройки TableAdapter .
На странице "Ввод инструкции 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.
В этом примере некоторые поля не будут отображаться, поэтому щелкните раскрывающееся меню рядом со следующими узлами и выберите "Нет".
ProductCategoryID
ИДМоделиПродукта
ИмяФайлаЭскизаФото
rowguid
Дата изменения
Щелкните раскрывающееся меню рядом с узлом ThumbNailPhoto и выберите "Изображение".
Замечание
По умолчанию элементы в окне источников данных , представляющие рисунки, имеют значение None по умолчанию. Это связано с тем, что изображения хранятся в виде массивов байтов в базах данных, а массивы байтов могут содержать все данные из простого массива байтов в исполняемый файл большого приложения.
В окне источников данных перетащите узел Product в строку сетки под строкой, содержащей кнопки.
Visual Studio создает XAML, определяющий набор элементов управления, привязанных к данным в таблице Products . Он также создает код, который загружает данные. Дополнительные сведения о созданном XAML и коде см. в разделе Привязка элементов управления WPF к данным в Visual Studio.
В конструкторе щелкните текстовое поле рядом с меткой Product ID.
В окне "Свойства" установите флажок рядом со свойством 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 Логотип Джерси, S.
Вы можете щелкнуть кнопки > или <, чтобы перейти к другим записям продукта.
В одной из записей продукта измените значение "Размер ", а затем нажмите кнопку "Сохранить изменения".
Закройте приложение, а затем перезапустите приложение, нажав клавишу F5 в Visual Studio.
Перейдите к измененной записи продукта и убедитесь, что изменения сохранены.
Закройте приложение.
Дальнейшие шаги
После выполнения этого пошагового руководства можно попробовать следующие связанные задачи:
Узнайте, как использовать окно источников данных в Visual Studio для привязки элементов управления WPF к другим типам источников данных. Дополнительные сведения см. в разделе "Привязка элементов управления WPF к службе данных WCF".
Узнайте, как использовать окно Источников данных в Visual Studio для отображения связанных данных (то есть данных в отношениях родитель-ребенок) в элементах управления WPF. Для получения дополнительной информации см. Пошаговое руководство: Отображение связанных данных в приложении WPF.
Связанный контент
- Привязка элементов управления WPF к данным в Visual Studio
- инструменты работы с наборами данных в Visual Studio
- Обзор привязки данных