Пошаговое руководство. Привязка элементов управления WPF к модели EDM
В этом пошаговом руководстве описывается создание приложения WPF, которое содержит связанные с данными элементы управления. Эти элементы управления привязаны к записям о клиентах, инкапсулированным в модели EDM (модель). Кроме того, описывается, как добавлять кнопки, с помощью которых клиенты могут перемещаться по записям и сохранять внесенные в них изменения.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание приложения WPF и модели EDM (модель), которые генерируются на основе данных в образце базы данных AdventureWorksLT.
Создание набора связанных с данными элементов управления путем перетаскивания сущности из окна Источники данных в окно в конструкторе WPF.
Создание кнопок для перемещения вперед и назад по записям о клиентах.
Создание кнопки для сохранения изменений, внесенных в элементы управления, в модели EDM (модель) и базовом источнике данных.
Примечание
На компьютере могут отображаться другие имена или расположения некоторых элементов пользовательского интерфейса Visual Studio, отличающиеся от указанных в следующих инструкциях.Эти элементы определяются используемой версией и параметрами настройки Visual Studio.Дополнительные сведения см. в разделе Работа с параметрами.
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
Visual Studio 2010.
Доступ к выполняющемуся экземпляру SQL Server или SQL Server Express с подключенным образцом базы данных AdventureWorksLT. Базу данных AdventureWorksLT можно загрузить с веб-узла CodePlex.
Предварительное ознакомление со следующими понятиями полезно, но не обязательно для выполнения пошагового руководства:
Модели EDM и ADO.NET Entity Framework. Дополнительные сведения см. в разделах Entity Data Model и Introducing the Entity Framework.
Работа с конструктором WPF. Дополнительные сведения см. в разделе Общие сведения о конструкторах WPF и Silverlight.
Привязка данных с помощью WPF. Дополнительные сведения см. в разделе Общие сведения о связывании данных.
Создание проекта
Создайте новый проект WPF для отображения записей о клиентах.
Создание проекта
Запустите Visual Studio.
В меню Файл последовательно выберите пункты Создать и Проект.
Разверните Visual Basic или Visual C#, затем выберите Windows.
Выберите шаблон проекта Приложение WPF.
В поле Имя введите AdventureWorksCustomerEditor, затем нажмите кнопку ОК.
Visual Studio создаст проект AdventureWorksCustomerEditor.
Создание модели EDM для приложения
Прежде чем приступать к созданию связанных с данными элементов управления, необходимо сначала определить модель данных и добавить ее в окно "Источники данных". В этом руководстве описывается создание модели EDM (модель).
Для создания модели EDM выполните следующие действия
В меню Данные выберите команду Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.
На странице Выбор типа источника данных выберите База данных и нажмите кнопку Далее.
На странице Выбор модели базы данных щелкните Модель EDM и нажмите кнопку Далее.
На странице Выбор содержимого модели щелкните Создать из базы данных и нажмите кнопку Далее.
На странице Выбор подключения к базе данных выполните одно из следующих действий:
Если в раскрывающемся списке отображено подключение к образцу базы данных AdventureWorksLT, выберите его.
– или –
Щелкните Создать подключение и создайте подключение к базе данных AdventureWorksLT.
Удостоверьтесь, что флажок Сохранить настройки подключения сущности в App.Config как установлен, и нажмите кнопку Далее.
На странице Выбор объектов базы данных разверните узел Tables и выберите таблицу Customer.
Нажмите кнопку Готово.
В конструкторе откроется файл Model1.edmx.
Выполните построение проекта.
Определение пользовательского интерфейса окна
Добавьте кнопки в окно путем изменения XAML в сред. Конструктор WPF.
Для определения пользовательского интерфейса окна выполните следующие действия
В обозревателе решений дважды щелкните MainWindow.xaml.
В сред. Конструктор WPF откроется окно.
В представлении конструктора XAML добавьте следующий код между тегами <Grid>.
<Grid.RowDefinitions> <RowDefinition Height="75" /> <RowDefinition Height="425" /> </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>
Выполните построение проекта.
Создание элементов управления с привязкой к данным
Создайте элементы управления, которые отображают записи о клиентах, путем перетаскивания объектов из окна Источники данных в сред. Конструктор WPF.
Чтобы создать элементы управления с привязкой к данным, выполните следующие действия
В меню Данные выберите пункт Показать источники данных.
В окне Источники данных щелкните раскрывающееся меню узла Customers и выберите пункт Сведения.
Разверните узел Customers.
В данном примере некоторые поля не будут отображаться, поэтому щелкните раскрывающееся меню рядом со следующими узлами и выберите Нет.
NameStyle
PasswordHash
PasswordSalt
rowGuid
ModifiedDate
Перетащите узел Customers из окна Источники данных в область под кнопками.
В конструкторе щелкните поле со списком рядом с меткой ID клиента.
В окне Свойства установите флажок около свойства IsReadOnly.
Выполните построение проекта.
Перемещение по записям клиентов
Добавьте код, который позволяет пользователям прокручивать список записей клиентов с помощью кнопок < и >.
Чтобы предоставить пользователям возможность перемещаться по записям клиентов, выполните следующие действия
В конструкторе дважды щелкните кнопку <.
Visual Studio откроет файл кода программной части и создаст новый обработчик событий backButton_Click для события Click.
Внесите изменения в обработчик событий Window_Loaded, чтобы CustomersViewSource и AdventureWorksLTEntities были вне метода и доступны для всей формы. Лишь объявите их глобальными для формы, назначьте их внутри обработчика события Window_Loaded аналогично следующему.
Dim CustomersViewSource As System.Windows.Data.CollectionViewSource Dim AdventureWorksLTEntities As AdventureWorksCustomerEditor.AdventureWorksLTEntities Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded CustomersViewSource = CType(Me.FindResource("CustomersViewSource"), System.Windows.Data.CollectionViewSource) AdventureWorksLTEntities = New AdventureWorksCustomerEditor.AdventureWorksLTEntities() 'Load data into Customers. You can modify this code as needed. Dim CustomersQuery As System.Data.Objects.ObjectQuery(Of AdventureWorksCustomerEditor.Customer) = Me.GetCustomersQuery(AdventureWorksLTEntities) CustomersViewSource.Source = CustomersQuery.Execute(System.Data.Objects.MergeOption.AppendOnly) End Sub
private System.Windows.Data.CollectionViewSource customersViewSource; private AdventureWorksCustomerEditor.AdventureWorksLTEntities adventureWorksLTEntities; private void Window_Loaded(object sender, RoutedEventArgs e) { adventureWorksLTEntities = new AdventureWorksCustomerEditor.AdventureWorksLTEntities(); // Load data into Customers. You can modify this code as needed. customersViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("customersViewSource"))); System.Data.Objects.ObjectQuery<AdventureWorksCustomerEditor.Customer> customersQuery = this.GetCustomersQuery(adventureWorksLTEntities); customersViewSource.Source = customersQuery.Execute(System.Data.Objects.MergeOption.AppendOnly); }
Добавьте следующий код в обработчик событий backButton_Click.
If CustomersViewSource.View.CurrentPosition > 0 Then CustomersViewSource.View.MoveCurrentToPrevious() End If
if (customersViewSource.View.CurrentPosition > 0) customersViewSource.View.MoveCurrentToPrevious();
Вернитесь в конструктор и дважды щелкните кнопку >.
Visual Studio откроет файл кода программной части и создаст новый обработчик событий nextButton_Click для события Click.
Добавьте следующий код в обработчик событий nextButton _Click.
If CustomersViewSource.View.CurrentPosition < CType(CustomersViewSource.View, CollectionView).Count - 1 Then CustomersViewSource.View.MoveCurrentToNext() End If
if (customersViewSource.View.CurrentPosition < ((CollectionView)customersViewSource.View).Count - 1) customersViewSource.View.MoveCurrentToNext();
Контрольная точка
Постройте и запустите проект, чтобы убедиться, что код компилируется и имеется возможность перемещаться по записям о клиентах.
Проверка работы приложения
Нажмите клавишу F5.
Выполняется сборка и запуск приложения. Проверьте следующее:
Отображаются данные о клиентах.
С помощью кнопок > и < можно перемещаться по записям о клиентах.
Сохранение изменений, внесенных в записи о клиентах
Добавьте код, который позволяет сохранять изменения, внесенных в записи о клиентах, с помощью кнопки Сохранить изменения.
Чтобы добавить возможность сохранения изменений, внесенных в записи о клиентах, выполните следующие действия
В конструкторе дважды щелкните кнопку Сохранить изменения.
Visual Studio откроет файл кода программной части и создаст новый обработчик событий saveButton_Click.
Добавьте следующий код в обработчик событий saveButton_Click.
AdventureWorksLTEntities.SaveChanges()
adventureWorksLTEntities.SaveChanges();
Тестирование приложения
Постройте и запустите приложение, чтобы удостовериться, что оно отображает записи о клиентах и позволяет сохранять внесенные в них изменения.
Проверка работы приложения
Нажмите клавишу F5.
Отредактируйте одну из записей о клиентах и нажмите кнопку Сохранить изменения.
Закройте приложение и запустите его вновь нажатием клавиши F5.
Перейдите к записи о клиенте, в которую было внесено изменение, и удостоверьтесь, что изменение сохранилось.
Закройте приложение.
Следующие действия
После прохождения этого пошагового руководства можно выполнить следующие действия:
Выясните, как использовать окно Источники данных в Visual Studio для привязки элементов управления WPF к источникам данных других типов. Дополнительные сведения см. в разделах Пошаговое руководство. Привязка элементов управления WPF к службе данных WCF и Пошаговое руководство. Привязка элементов управления WPF к набору данных.
Выясните, как использовать окно Источники данных в Visual Studio для отображения связанных данных (т. е. данных в иерархических отношениях) в элементах управления WPF. Дополнительные сведения см. в разделе Пошаговое руководство. Отображение связанных данных в приложении WPF.
См. также
Задачи
Практическое руководство. Привязка элементов управления WPF к данным в Visual Studio
Пошаговое руководство. Привязка элементов управления WPF к набору данных
Пошаговое руководство. Привязка элементов управления WPF к службе данных WCF
Основные понятия
Привязка элементов управления WPF к данным в Visual Studio
Общие сведения о конструкторах WPF и Silverlight
Общие сведения о связывании данных