Пошаговое руководство. Привязка элементов управления WPF к модели EDM

В этом пошаговом руководстве описывается создание приложения WPF, которое содержит связанные с данными элементы управления.Эти элементы управления привязаны к записям о клиентах, инкапсулированным в модели EDM (модель данных с использованием сущностей).Кроме того, описывается, как добавлять кнопки, с помощью которых клиенты могут перемещаться по записям и сохранять внесенные в них изменения.

В данном пошаговом руководстве рассмотрены следующие задачи:

  • Создание приложения WPF и модели EDM (модель данных с использованием сущностей), которые генерируются на основе данных в образце базы данных AdventureWorksLT.

  • Создание набора связанных с данными элементов управления путем перетаскивания сущности из окна Источники данных в окно в конструкторе WPF.

  • Создание кнопок для перемещения вперед и назад по записям о клиентах.

  • Создание кнопки для сохранения изменений, внесенных в элементы управления, в модели EDM (модель данных с использованием сущностей) и базовом источнике данных.

    ПримечаниеПримечание

    На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Обязательные компоненты

Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.

  • Visual Studio

  • Доступ к выполняющемуся экземпляру SQL Server или SQL Server Express с подключенным образцом базы данных AdventureWorksLT.Базу данных AdventureWorksLT можно загрузить с веб-узла CodePlex.

Предварительное ознакомление со следующими понятиями полезно, но не обязательно для выполнения пошагового руководства:

Создание проекта

Создайте новый проект WPF для отображения записей о клиентах.

Создание проекта

  1. Запустите Visual Studio.

  2. В меню Файл последовательно выберите пункты Создать и Проект.

  3. Разверните Visual Basic или Visual C#, затем выберите Windows.

  4. Выберите шаблон проекта Приложение WPF.

  5. В поле Имя введите AdventureWorksCustomerEditor, затем нажмите кнопку ОК.

    Visual Studio создаст проект AdventureWorksCustomerEditor.

Создание модели EDM для приложения

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

Для создания модели EDM выполните следующие действия

  1. В меню Данные выберите команду Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.

  2. На странице Выбор типа источника данных выберите База данных и нажмите кнопку Далее.

  3. На странице Выбор модели базы данных щелкните Модель EDM и нажмите кнопку Далее.

  4. На странице Выбор содержимого модели щелкните Создать из базы данных и нажмите кнопку Далее.

  5. На странице Выбор подключения к базе данных выполните одно из следующих действий:

    • Если в раскрывающемся списке отображено подключение к образцу базы данных AdventureWorksLT, выберите его.

      -или-

    • Щелкните Создать подключение и создайте подключение к базе данных AdventureWorksLT.

    Удостоверьтесь, что флажок Сохранить настройки подключения сущности в App.Config как установлен, и нажмите кнопку Далее.

  6. На странице Выбор объектов базы данных разверните узел Tables и выберите таблицу Customer.

  7. Нажмите кнопку Готово.

    В конструкторе откроется файл Model1.edmx.

  8. Выполните построение проекта.

Определение пользовательского интерфейса окна

Добавьте кнопки в окно путем изменения XAML в конструкторе WPF.

Для определения пользовательского интерфейса окна выполните следующие действия

  1. В обозревателе решений дважды щелкните MainWindow.xaml.

    В конструкторе WPF откроется окно.

  2. В представлении конструктора XAML добавьте следующий код между тегами <Grid>.

    <Grid.RowDefinitions>
         <RowDefinition Height="75" />
         <RowDefinition Height="425" />
    </Grid.RowDefinitions>
    <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75">&lt;</Button>
    <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">&gt;</Button>
    <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>
    
  3. Выполните построение проекта.

Создание элементов управления с привязкой к данным

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

Чтобы создать элементы управления с привязкой к данным, выполните следующие действия

  1. В меню Данные выберите пункт Показать источники данных.

  2. В окне Источники данных щелкните раскрывающееся меню узла Customers и выберите пункт Сведения.

  3. Разверните узел Customers.

  4. В данном примере некоторые поля не будут отображаться, поэтому щелкните раскрывающееся меню рядом со следующими узлами и выберите Нет.

    • NameStyle

    • PasswordHash

    • PasswordSalt

    • rowGuid

    • ModifiedDate

  5. Перетащите узел Customers из окна Источники данных в область под кнопками.

  6. В конструкторе щелкните поле со списком рядом с меткой ID клиента.

  7. В окне Свойства установите флажок около свойства IsReadOnly.

  8. Выполните построение проекта.

Перемещение по записям клиентов

Добавьте код, который позволяет пользователям прокручивать список записей клиентов с помощью кнопок < и >.

Чтобы предоставить пользователям возможность перемещаться по записям клиентов, выполните следующие действия

  1. В конструкторе дважды щелкните кнопку <.

    Visual Studio откроет файл кода программной части и создаст новый обработчик событий backButton_Click для события Click.

  2. Внесите изменения в обработчик событий 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);
    }
    
  3. Добавьте следующий код в обработчик событий backButton_Click.

    If CustomersViewSource.View.CurrentPosition > 0 Then
        CustomersViewSource.View.MoveCurrentToPrevious()
    End If
    
    if (customersViewSource.View.CurrentPosition > 0)
        customersViewSource.View.MoveCurrentToPrevious();
    
  4. Вернитесь в конструктор и дважды щелкните кнопку >.

    Visual Studio откроет файл кода программной части и создаст новый обработчик событий nextButton_Click для события Click.

  5. Добавьте следующий код в обработчик событий 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.

    Выполняется сборка и запуск приложения.Проверьте следующее:

    • Отображаются данные о клиентах.

    • С помощью кнопок > и < можно перемещаться по записям о клиентах.

Сохранение изменений, внесенных в записи о клиентах

Добавьте код, который позволяет сохранять изменения, внесенных в записи о клиентах, с помощью кнопки Сохранить изменения.

Чтобы добавить возможность сохранения изменений, внесенных в записи о клиентах, выполните следующие действия

  1. В конструкторе дважды щелкните кнопку Сохранить изменения.

    Visual Studio откроет файл кода программной части и создаст новый обработчик событий saveButton_Click.

  2. Добавьте следующий код в обработчик событий saveButton_Click.

    AdventureWorksLTEntities.SaveChanges()
    
    adventureWorksLTEntities.SaveChanges();
    

Тестирование приложения

Постройте и запустите приложение, чтобы удостовериться, что оно отображает записи о клиентах и позволяет сохранять внесенные в них изменения.

Тестирование приложения

  1. Нажмите клавишу F5.

  2. Отредактируйте одну из записей о клиентах и нажмите кнопку Сохранить изменения.

  3. Закройте приложение и запустите его вновь нажатием клавиши F5.

  4. Перейдите к записи о клиенте, в которую было внесено изменение, и удостоверьтесь, что изменение сохранилось.

  5. Закройте приложение.

Следующие действия

После прохождения этого пошагового руководства можно выполнить следующие действия:

См. также

Задачи

Практическое руководство. Привязка элементов управления WPF к данным в Visual Studio

Пошаговое руководство. Привязка элементов управления WPF к набору данных

Пошаговое руководство. Привязка элементов управления WPF к службе данных WCF

Основные понятия

Привязка элементов управления WPF к данным в Visual Studio

Общие сведения о конструкторах WPF и Silverlight

Общие сведения о связывании данных

Другие ресурсы

Introducing the Entity Framework