Udostępnij za pośrednictwem


Wskazówki: powiązywanie kontrolek WPF z usługą danych programu WCF

W tym przykładzie tworzymy aplikacji WPF, zawierający formantów powiązanych z danymi.Formanty są powiązane z rekordów klientów, którzy znajdują się w Usługa danych programu WCF.Będzie także dodać przyciski, które klienci mogą użyć do przeglądania i aktualizowania rekordów.

W instruktażu przedstawiono następujące zagadnienia:

  • Tworzenie modelu Entity Data Model, który jest generowany na podstawie danych w bazie danych AdventureWorksLT.

  • Tworzenie Usługa danych programu WCF która udostępnia dane w modelu Entity Data Model aplikacji WPF.

  • Tworzenie zestawu formantów powiązanych z danymi, przeciągając elementy z źródła danych okno do projektanta WPF.

  • Tworzenie przycisków, które nawigować do przodu i wstecz z rekordów klientów.

  • Tworzenie przycisku, który zapisuje zmiany w danych znajdujących się na Usługa danych programu WCF i źródła danych.

    [!UWAGA]

    Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Wymagania wstępne

Następujące składniki są wymagane do przeprowadzenia tego instruktażu:

  • Visual Studio

  • Dostęp do uruchamiane wystąpienie programu SQL Server lub SQL Server Express zawierającej AdventureWorksLT przykładowej bazy danych dołączone do niego.Możesz pobrać z bazy danych AdventureWorksLT witryny sieci Web w witrynie CodePlex.

Znajomość następujące pojęcia jest również przydatne, ale nie jest wymagane do ukończenia Instruktaż:

Tworzenie projektu usługi

Rozpocząć od utworzenia projektu dla tej procedury Usługa danych programu WCF.

Aby utworzyć projekt usługi

  1. Uruchom program Visual Studio.

  2. W menu Plik, wskaż Nowy, a następnie kliknij przycisk Projekt.

  3. Rozwiń węzeł Visual C# lub Visual Basic, a następnie wybierz opcję Web.

  4. Wybierz aplikacji sieci Web ASP.NET szablon projektu.

  5. W Nazwa wpisz AdventureWorksService i kliknij przycisk OK.

    Program Visual Studio tworzy AdventureWorksService projektu.

  6. W Eksploratora rozwiązań, kliknij prawym przyciskiem myszy Default.aspx i wybierz usunąć.Ten plik nie jest konieczne w tej procedury.

Tworzenie modelu Entity Data Model dla usługi

Do udostępnienia danych do aplikacji za pomocą Usługa danych programu WCF, musisz zdefiniować model danych dla usługi. Usługa danych programu WCF Obsługuje dwa typy danych modeli: modeli danych jednostki i modeli danych niestandardowych, które zdefiniowano za pomocą wspólnych obiektów wykonywalnych języka implementujących IQueryable interfejsu.W tym przykładzie tworzymy modelu Entity Data Model dla modelu danych.

Tworzenie modelu Entity Data Model

  1. W menu Projekt kliknij opcję Dodaj nowy element.

  2. Na liście Zainstalowane szablony, kliknij przycisk danych, a następnie wybierz opcję modelu danych jednostki ADO.NET elementu projektu.

  3. Zmień nazwę do AdventureWorksModel.edmx, i kliknij przycisk Dodaj.

    Kreator modelu danych jednostki otwiera.

  4. Na wybrać zawartość modelu kliknij przycisk Generuj z bazy danych, i kliknij przycisk Dalej.

  5. Na Wybieranie połączenia danych swojego strony, wybierz jedną z następujących czynności:

    • Jeśli połączenie danych z bazy danych AdventureWorksLT próbki jest dostępna na liście rozwijanej, zaznacz go.

      —lub—

    • Kliknij przycisk nowe połączenie i Utwórz połączenie z bazą danych AdventureWorksLT.

  6. Na Wybieranie połączenia danych swojego upewnij się, że zapisać ustawienia połączenia w App.Config jako jednostki opcja jest zaznaczona, a następnie kliknij przycisk Dalej.

  7. Na Wybierz obiekty bazy danych użytkownika strony, a następnie rozwiń tabel, a następnie wybierz opcję SalesOrderHeader tabeli.

  8. Kliknij Zakończ.

Tworzenie usługi

Utwórz Usługa danych programu WCF udostępnić dane w modelu Entity Data Model aplikacji WPF.

Tworzenie usługi

  1. Na projektu menu, wybierz opcję Dodaj nowy element.

  2. Na liście Zainstalowane szablony, kliknij przycisk Web, a następnie wybierz opcję usługi danych WCF elementu projektu.

  3. W Nazwa wpisz AdventureWorksService.svc i kliknij przycisk Dodaj.

    Dodaje programu Visual Studio AdventureWorksService.svc do projektu.

Konfigurowanie usługi

Należy skonfigurować usługę może działać w modelu Entity Data Model, który zostanie utworzony.

Aby skonfigurować usługę

  1. W AdventureWorks.svc kod pliku, Zastąp AdventureWorksService klasy deklaracji z następującego kodu.

    Public Class AdventureWorksService
        Inherits DataService(Of AdventureWorksLTEntities)
    
        ' This method is called only once to initialize service-wide policies. 
        Public Shared Sub InitializeService(ByVal config As IDataServiceConfiguration)
            config.SetEntitySetAccessRule("SalesOrderHeaders", EntitySetRights.All)
            config.UseVerboseErrors = True 
        End Sub 
    End Class
    
    public class AdventureWorksService : DataService<AdventureWorksLTEntities>
    {
        // This method is called only once to initialize service-wide policies. 
        public static void InitializeService(IDataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("SalesOrderHeaders", EntitySetRights.All);
        }
    }
    

    Aktualizuje ten kod AdventureWorksService klasy, tak aby pochodzi od klasy DataService który będzie używał AdventureWorksLTEntities Klasa kontekstu w modelu Entity Data Model obiektu.Ponadto program aktualizuje InitializeService metody zezwalać klientom pełną odczytu/zapisu usługi dostępu do SalesOrderHeader jednostki.

  2. Skompilować projekt i sprawdź, czy tworzenia bez błędów.

Tworzenie aplikacji klienckiej WPF

Aby wyświetlić dane z Usługa danych programu WCF, Utwórz nową aplikację WPF ze źródłem danych, które jest oparte na usługę.W dalszej części tej procedury spowoduje dodanie formantów powiązanych danych do aplikacji.

Tworzenie aplikacji klienckiej WPF

  1. W Eksploratora rozwiązań, kliknij prawym przyciskiem myszy węzeł rozwiązania, kliknij przycisk Dodaj, i wybierz Nowy projekt.

  2. W Nowy projekt okno dialogowe, rozwiń węzeł Visual C# lub Visual Basic, a następnie wybierz opcję systemu Windows.

  3. Wybierz aplikacji WPF szablon projektu.

  4. W Nazwa wpisz AdventureWorksSalesEditor i kliknij przycisk OK.

    Dodaje programu Visual Studio AdventureWorksSalesEditor projekt do rozwiązania.

  5. W menu Dane kliknij przycisk Pokaż źródła danych.

    Źródła danych zostanie otwarte okno.

  6. W źródła danych okna, kliknij przycisk Dodaj nowe źródło danych.

    Zostanie otwarty Kreator konfiguracji źródła danych.

  7. W Wybierz typ źródła danych kreatora, wybierz opcję usługi a następnie kliknij przycisk Dalej.

  8. W Dodaj odwołanie do usługi okno dialogowe, kliknij przycisk Discover.

    Program Visual Studio wyszukuje bieżącego rozwiązania dla usług dostępnych i dodaje AdventureWorksService.svc do listy usług dostępnych w usług pola.

  9. W nazw wpisz AdventureWorksService.

  10. W usług kliknij AdventureWorksService.svc a następnie kliknij przycisk OK.

    Visual Studio — pliki do pobrania informacji o usługi, a następnie zwraca do Kreatora konfiguracji źródła danych.

  11. W Dodaj odwołanie do usługi kliknij przycisk Zakończ.

    Program Visual Studio dodaje węzłów, które zawierają dane zwrócone przez usługę do źródła danych okna.

Definiowanie okna interfejsu użytkownika

Dodaj kilka przycisków w oknie modyfikując XAML w programie WPF designer.W dalszej części tej procedury spowoduje dodanie kodu, który pozwala użytkownikom na wyświetlanie i aktualizowanie rekordów sprzedaży przy użyciu tych przycisków.

Tworzenie układu okna.

  1. W Eksploratora rozwiązań, kliknij dwukrotnie pozycję MainWindow.xaml.

    Otwiera okno w Projektancie WPF.

  2. W XAML Wyświetlanie projektanta, Dodaj następujący kod między <Grid> znaczniki:

    <Grid.RowDefinitions>
        <RowDefinition Height="75" />
        <RowDefinition Height="525" />
    </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. Skompiluj projekt.

Tworzenie formantów powiązanych z danymi

Tworzenie formantów wyświetlanych rekordów klientów, przeciągając SalesOrderHeaders węzła z źródła danych okno do projektanta.

Aby utworzyć formantów powiązanych z danymi

  1. W źródła danych okna, kliknij menu rozwijane dla SalesOrderHeaders a następnie wybierz węzeł Szczegóły.

  2. Rozwiń węzeł SalesOrderHeaders węzła.

  3. W tym przykładzie niektóre pola nie zostaną wyświetlone tak kliknij menu rozwijane obok następujące węzły i wybierz Brak:

    • CreditCardApprovalCode

    • Data modyfikacji

    • OnlineOrderFlag

    • RevisionNumber

    • może występować

    Ta akcja uniemożliwia tworzenie formantów powiązanych danych dla tych węzłów w następnym kroku programu Visual Studio.Niniejszy przewodnik przyjmuje się, że użytkownik końcowy nie musi do wyświetlania tych danych.

  4. Z źródła danych okna, przeciągnij SalesOrderHeaders węzeł do wiersza siatki, w obszarze wiersza, który zawiera przyciski.

    Generuje programu Visual Studio, XAML i kodu, który tworzy zestaw formantów, które są związane z danymi w produktu tabeli.Aby uzyskać więcej informacji na temat wygenerowanego kodu i XAML, zobacz Powiązywanie kontrolek WPF z danymi w Visual Studio.

  5. W projektancie, kliknij pole tekstowe identyfikator klienta etykiety.

  6. W właściwości okna, zaznacz pole wyboru obok pozycji IsReadOnly właściwości.

  7. Ustaw IsReadOnly właściwości dla każdej z poniższych pól tekstowych:

    • Numer zamówienia zakupu

    • Identyfikator zamówienia sprzedaży

    • Numer zamówienia sprzedaży

Ładowanie danych z usługi

Obiekt serwera proxy usługi jest używany do ładowania danych sprzedaży z usługi, a następnie przypisz zwracanych danych ze źródłem danych CollectionViewSource w oknie WPF.

Aby załadować dane z usługi

  1. W projektancie, kliknij dwukrotnie tekst, który odczytuje: MainWindow do utworzenia Window_Loaded program obsługi zdarzeń.

  2. Zastąp następujący kod obsługi zdarzeń.Upewnij się, że można zamienić localhost adresu w ten kod przy użyciu adresu hosta lokalnego na komputerze dewelopera.

    Private DataServiceClient As AdventureWorksService.AdventureWorksLTEntities
    Private SalesQuery As System.Data.Services.Client.DataServiceQuery(Of AdventureWorksService.SalesOrderHeader)
    Private OrdersViewSource As CollectionViewSource
    
    Private Sub Window_Loaded(ByVal Sender As Object, ByVal e As RoutedEventArgs) Handles MyBase.Loaded
    
        ' TODO: Modify the port number in the following URI as required.
        DataServiceClient = New AdventureWorksService.AdventureWorksLTEntities( _
        New Uri("https://localhost:32415/AdventureWorksService.svc"))
        SalesQuery = DataServiceClient.SalesOrderHeaders
    
        OrdersViewSource = CType(Me.FindResource("SalesOrderHeadersViewSource"), CollectionViewSource)
        OrdersViewSource.Source = SalesQuery.Execute()
        OrdersViewSource.View.MoveCurrentToFirst()
    End Sub
    
    private AdventureWorksService.AdventureWorksLTEntities dataServiceClient;
    private System.Data.Services.Client.DataServiceQuery<AdventureWorksService.SalesOrderHeader> salesQuery;
    private CollectionViewSource ordersViewSource;
    
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        // TODO: Modify the port number in the following URI as required.
        dataServiceClient = new AdventureWorksService.AdventureWorksLTEntities(
            new Uri("https://localhost:45899/AdventureWorksService.svc"));
        salesQuery = dataServiceClient.SalesOrderHeaders;
    
        ordersViewSource = ((CollectionViewSource)(this.FindResource("salesOrderHeadersViewSource")));
        ordersViewSource.Source = salesQuery.Execute();
        ordersViewSource.View.MoveCurrentToFirst();
    }
    

Nawigowanie po rekordach sprzedaży

Dodaj kod, który umożliwia użytkownikom przewijać rekordy sprzedaży za pomocą < i > przycisków.

Aby umożliwić użytkownikom przechodzenie rekordy sprzedaży

  1. W projektancie, kliknij dwukrotnie < przycisk na powierzchni okna.

    Visual Studio otwiera plik kodem i tworzy nowy backButton_Click program obsługi zdarzeń dla Click zdarzenia.

  2. Dodaj następujący kod do wygenerowanej backButton_Click obsługi zdarzeń:

    If OrdersViewSource.View.CurrentPosition > 0 Then
        OrdersViewSource.View.MoveCurrentToPrevious()
    End If
    
    if (ordersViewSource.View.CurrentPosition > 0)
        ordersViewSource.View.MoveCurrentToPrevious();
    
  3. Powrót do projektanta, a następnie kliknij dwukrotnie > przycisku.

    Visual Studio otwiera plik kodem i tworzy nowy nextButton_Click program obsługi zdarzeń dla Click zdarzenia.

  4. Dodaj następujący kod do wygenerowanej nextButton_Click obsługi zdarzeń:

    If OrdersViewSource.View.CurrentPosition < CType(OrdersViewSource.View, CollectionView).Count - 1 Then
        OrdersViewSource.View.MoveCurrentToNext()
    End If
    
    if (ordersViewSource.View.CurrentPosition < ((CollectionView)ordersViewSource.View).Count - 1)
    {
        ordersViewSource.View.MoveCurrentToNext();
    }
    

Zapisywanie zmian w sprzedaży rekordów

Dodaj kod, który umożliwia użytkownikom zarówno wyświetlić i zapisać zmiany w sprzedaży rekordów przy użyciu zapisać zmiany przycisku.

Aby dodać możliwość zapisania zmian do sprzedaży rekordów

  1. W projektancie, kliknij dwukrotnie Zapisz zmiany przycisku.

    Visual Studio otwiera plik kodem i tworzy nowy saveButton_Click program obsługi zdarzeń dla Click zdarzenia.

  2. Dodaj następujący kod do saveButton_Click program obsługi zdarzeń.

    Dim CurrentOrder As AdventureWorksService.SalesOrderHeader = CType(OrdersViewSource.View.CurrentItem, AdventureWorksService.SalesOrderHeader)
    
    DataServiceClient.UpdateObject(CurrentOrder)
    DataServiceClient.SaveChanges()
    
    AdventureWorksService.SalesOrderHeader currentOrder = (AdventureWorksService.SalesOrderHeader)ordersViewSource.View.CurrentItem;
    dataServiceClient.UpdateObject(currentOrder);
    dataServiceClient.SaveChanges();
    

Testowanie aplikacji

Tworzenie i uruchamianie aplikacji, aby sprawdzić, czy możesz wyświetlać i aktualizowanie rekordów odbiorcy.

Aby przetestować aplikację

  1. Na Tworzenie menu, kliknij przycisk tworzyć rozwiązania.Upewnij się, że to rozwiązanie tworzy bez błędów.

  2. Naciśnij klawisz CTRL + F5.

    Uruchamia program Visual Studio AdventureWorksService projektu bez debugowania go.

  3. W Eksploratora rozwiązań, kliknij prawym przyciskiem myszy AdventureWorksSalesEditor projektu.

  4. W menu kontekstowym pod Debugowanie, kliknij przycisk rozpoczęcia nowego wystąpienia.

    Aplikacja zostanie uruchomiona.Sprawdź, czy:

    • Pola tekstowe wyświetlać różne pola danych z pierwszego rekordu sprzedaży o identyfikatorze zamówienia sprzedaży 71774.

    • Można kliknąć > lub < przycisków, aby poruszanie się po inne rekordy sprzedaży.

  5. W jednym z rekordów sprzedaży, należy wpisać tekst w komentarz a następnie kliknij przycisk zapisać zmiany.

  6. Zamknij aplikację, a następnie ponownie uruchom aplikację z programu Visual Studio.

  7. Przejdź do rekordu sprzedaży, który został zmieniony, a następnie sprawdź, czy ta zmiana będzie nadal występować po Zamknij i otwórz ponownie aplikację.

  8. Zamknij aplikację.

Następne kroki

Po wykonaniu tej procedury, można wykonać następujące zadania:

Zobacz też

Zadania

Porady: powiązanie formantów WPF z danymi w Visual Studio

Wskazówki: powiązywanie kontrolek WPF z zestawem danych

Koncepcje

Powiązywanie kontrolek WPF z danymi w Visual Studio

WCF Data Services Overview

Entity Framework Overview

Przegląd Wiązanie danych

Inne zasoby

Omówienie projektanta WPF