Sdílet prostřednictvím


Vytvoření vazby ovládacích prvků WPF k datové službě WCF

V tomto názorném postupu vytvoříte aplikaci WPF, která obsahuje ovládací prvky vázané na data. Ovládací prvky jsou vázané na záznamy zákazníků, které jsou zapouzdřeny ve službě WCF Data Service. Přidáte také tlačítka, která můžou zákazníci použít k zobrazení a aktualizaci záznamů.

Tento návod znázorňuje následující úlohy:

  • Vytvoření modelu Entity Data Model, který je generován z dat v ukázkové databázi AdventureWorksLT.

  • Vytvoření datové služby WCF, která zveřejňuje data v modelu Entity Data Model pro aplikaci WPF.

  • Vytvoření sady ovládacích prvků vázaných na data přetažením položek z okna Zdroje dat do návrháře WPF

  • Vytváření tlačítek, která přechází vpřed a vzad prostřednictvím záznamů zákazníků

  • Vytvoření tlačítka, které ukládá změny dat v ovládacích prvcích do datové služby WCF a souvisejícího zdroje dat.

Poznámka:

V počítači se můžou zobrazovat různé názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio v tomto článku. Možná používáte jinou edici sady Visual Studio nebo jiné nastavení prostředí. Další informace naleznete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).

Požadavky

K dokončení tohoto návodu budete potřebovat následující komponenty:

  • Visual Studio

  • Přístup ke spuštěné instanci SQL Serveru nebo SQL Serveru Express, která má připojenou ukázkovou databázi AdventureWorksLT. Stažení databáze najdete v ukázkových databázích AdventureWorks.

Předchozí znalost následujících konceptů je užitečná, ale nevyžaduje se k dokončení návodu:

  • Datové služby WCF.

  • Datové modely v Datové služby WCF

  • Entity Data Models a ADO.NET Entity Framework. Další informace najdete v tématu Entity Framework – přehled.

  • Datová vazba WPF Další informace najdete v tématu Přehled datových vazeb.

Vytvoření projektu služby

  1. Spusťte tento návod vytvořením projektu webové aplikace jazyka C# nebo Visual Basic ASP.NET. Pojmenujte projekt AdventureWorksService.

  2. V Průzkumník řešení klikněte pravým tlačítkem na Default.aspx a vyberte Odstranit. Tento soubor není nutný pro názorný postup.

Vytvoření modelu Entity Data Model pro službu

Pokud chcete zpřístupnit data pro aplikaci pomocí služby WCF Data Service, musíte pro tuto službu definovat datový model. Služba WCF Data Service podporuje dva typy datových modelů: Entity Data Models a vlastní datové modely definované pomocí objektů CLR (Common Language Runtime), které implementují IQueryable<T> rozhraní. V tomto názorném postupu vytvoříte datový model entity pro datový model.

  1. V nabídce Projekt klepněte na tlačítko Přidat novou položku.

  2. V seznamu Nainstalované šablony klepněte na tlačítko Data a pak vyberte položku projektu ADO.NET Entity Data Model .

  3. Změňte název na AdventureWorksModel.edmxa klikněte na Přidat.

    Otevře se průvodce Entity Data Model .

  4. Na stránce Zvolit obsah modelu klepněte na tlačítko Generovat z databáze a klepněte na tlačítko Další.

  5. Na stránce Zvolit vaše data Připojení ion vyberte jednu z následujících možností:

    • Pokud je datové připojení k ukázkové databázi AdventureWorksLT dostupné v rozevíracím seznamu, vyberte ho.

    • Klikněte na Tlačítko Nový Připojení ion a vytvořte připojení k databázi AdventureWorksLT.

  6. Na stránce Zvolit data Připojení ion se ujistěte, že je vybraná možnost Uložit připojení entity v App.Config, a potom klikněte na Další.

  7. Na stránce Zvolit databázové objekty rozbalte tabulky a pak vyberte tabulku SalesOrderHeader.

  8. Klikněte na Finish (Dokončit).

Vytvoření služby

Vytvořte datovou službu WCF pro zveřejnění dat v modelu Entity Data Model pro aplikaci WPF:

  1. V nabídce Projekt vyberte Přidat novou položku.

  2. V seznamu Nainstalované šablony klepněte na tlačítko Web a pak vyberte položku projektu WCF Data Service.

  3. Do pole Název zadejte AdventureWorksService.svca klepněte na tlačítko Přidat.

    Visual Studio přidá projekt AdventureWorksService.svc .

Konfigurace služby

Službu musíte nakonfigurovat tak, aby fungovala s modelem Entity Data Model, který jste vytvořili:

  1. AdventureWorks.svc V souboru kódu nahraďte deklaraci třídy AdventureWorksService následujícím kódem.

    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);
        }
    }
    

    Tento kód aktualizuje třídu AdventureWorksService , aby byla odvozena z DataService<T> objektu AdventureWorksLTEntities , který pracuje s kontextovou třídou objektu ve vašem modelu Entity Data Model. Aktualizuje také metodu InitializeService , aby klientům služby umožňovala úplný přístup pro čtení a zápis k entitě SalesOrderHeader .

  2. Sestavte projekt a ověřte, že se sestaví bez chyb.

Vytvoření klientské aplikace WPF

Pokud chcete zobrazit data ze služby WCF Data Service, vytvořte novou aplikaci WPF se zdrojem dat, který je založený na službě. Později v tomto názorném postupu přidáte do aplikace ovládací prvky vázané na data.

  1. V Průzkumník řešení klikněte pravým tlačítkem na uzel řešení, klikněte na Přidat a vyberte Nový projekt.

  2. V dialogovém okně Nový projekt rozbalte Visual C# nebo Visual Basic a pak vyberte Windows.

  3. Vyberte šablonu projektu aplikace WPF.

  4. Do pole Název zadejte AdventureWorksSalesEditora klepněte na tlačítko OK.

    Visual Studio přidá AdventureWorksSalesEditor projekt do řešení.

  5. V nabídce Data klikněte na Zobrazit zdroje dat.

    Otevře se okno Zdroje dat.

  6. V okně Zdroje dat klikněte na Přidat nový zdroj dat.

    Otevře se Průvodce konfigurací zdroje dat.

  7. Na stránce Zvolit typ zdroje dat v průvodci vyberte Možnost Služba a potom klepněte na tlačítko Další.

  8. V dialogovém okně Přidat odkaz služby klepněte na tlačítko Zjistit.

    Visual Studio vyhledá aktuální řešení pro dostupné služby a přidá AdventureWorksService.svc do seznamu dostupných služeb v poli Služby .

  9. Do pole Obor názvů zadejte AdventureWorksService.

  10. V poli Služby klepněte na tlačítko AdventureWorksService.svc a klepněte na tlačítko OK.

    Visual Studio stáhne informace o službě a pak se vrátí do průvodce konfigurací zdroje dat.

  11. Na stránce Přidat odkaz na službu klepněte na tlačítko Dokončit.

    Visual Studio přidá uzly, které představují data vrácená službou, do okna Zdroje dat.

Definování uživatelského rozhraní

Přidejte do okna několik tlačítek úpravou XAML v návrháři WPF. Později v tomto názorném postupu přidáte kód, který uživatelům umožňuje zobrazit a aktualizovat záznamy o prodeji pomocí těchto tlačítek.

  1. V Průzkumník řešení poklikejte na MainWindow.xaml.

    Okno se otevře v návrháři WPF.

  2. V zobrazení XAML návrháře přidejte mezi <Grid> značky následující kód:

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

Vytvoření ovládacích prvků vázaných na data

Vytvořte ovládací prvky, které zobrazují záznamy zákazníků přetažením SalesOrderHeaders uzlu z okna Zdroje dat do návrháře.

  1. V okně Zdroje dat klikněte na rozevírací nabídku pro uzel SalesOrderHeaders a vyberte Podrobnosti.

  2. Rozbalte uzel SalesOrderHeaders.

  3. V tomto příkladu se některá pole nezobrazí, takže klikněte na rozevírací nabídku vedle následujících uzlů a vyberte Žádné:

    • CreditCardApprovalCode

    • Modifieddate

    • OnlineOrderFlag

    • RevisionNumber

    • Rowguid

    Tato akce zabrání sadě Visual Studio v vytváření ovládacích prvků vázaných na data pro tyto uzly v dalším kroku. V tomto názorném postupu předpokládejme, že koncový uživatel nemusí tato data zobrazit.

  4. V okně Zdroje dat přetáhněte uzel SalesOrderHeaders na řádek mřížky pod řádkem, který obsahuje tlačítka.

    Visual Studio generuje XAML a kód, který vytvoří sadu ovládacích prvků, které jsou svázané s daty v tabulce Product . Další informace o vygenerovaném xaml a kódu naleznete v tématu Vytvoření vazby ovládacích prvků WPF k datům v sadě Visual Studio.

  5. V návrháři klikněte na textové pole vedle popisku ID zákazníka.

  6. V okně Vlastnosti zaškrtněte políčko vedle vlastnosti IsReadOnly .

  7. Nastavte vlastnost IsReadOnly pro každé z následujících textových polí:

    • Číslo nákupní objednávky

    • ID prodejní objednávky

    • Číslo prodejní objednávky

Načtení dat ze služby

Pomocí objektu proxy služby načtěte prodejní data ze služby. Potom přiřaďte vrácená data ke zdroji dat pro CollectionViewSource okno WPF.

  1. Chcete-li v návrháři vytvořit obslužnou rutinu Window_Loaded události, poklikejte na text, který přečte: MainWindow.

  2. Obslužnou rutinu události nahraďte následujícím kódem. Ujistěte se, že adresu v tomto kódu nahradíte localhost místní adresou hostitele ve vývojovém počítači.

    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("http://localhost:45899/AdventureWorksService.svc"));
        salesQuery = dataServiceClient.SalesOrderHeaders;
    
        ordersViewSource = ((CollectionViewSource)(this.FindResource("salesOrderHeadersViewSource")));
        ordersViewSource.Source = salesQuery.Execute();
        ordersViewSource.View.MoveCurrentToFirst();
    }
    

Přidejte kód, který uživatelům umožňuje procházet záznamy o prodeji pomocí tlačítek<.>

  1. V návrháři poklikejte na < tlačítko na ploše okna.

    Visual Studio otevře soubor kódu za kódem a vytvoří pro událost novou backButton_Click obslužnou rutinu Click události.

  2. Do vygenerované obslužné backButton_Click rutiny události přidejte následující kód:

    if (ordersViewSource.View.CurrentPosition > 0)
        ordersViewSource.View.MoveCurrentToPrevious();
    
  3. Vraťte se do návrháře a poklikejte na > tlačítko.

    Visual Studio otevře soubor kódu za kódem a vytvoří pro událost novou nextButton_Click obslužnou rutinu Click události.

  4. Do vygenerované obslužné nextButton_Click rutiny události přidejte následující kód:

    if (ordersViewSource.View.CurrentPosition < ((CollectionView)ordersViewSource.View).Count - 1)
    {
        ordersViewSource.View.MoveCurrentToNext();
    }
    

Uložení změn do záznamů o prodeji

Přidejte kód, který uživatelům umožňuje zobrazit a uložit změny do záznamů o prodeji pomocí tlačítka Uložit změny :

  1. V návrháři poklikejte na tlačítko Uložit změny .

    Visual Studio otevře soubor kódu za kódem a vytvoří pro událost novou saveButton_Click obslužnou rutinu Click události.

  2. Do obslužné rutiny saveButton_Click události přidejte následující kód.

    AdventureWorksService.SalesOrderHeader currentOrder = (AdventureWorksService.SalesOrderHeader)ordersViewSource.View.CurrentItem;
    dataServiceClient.UpdateObject(currentOrder);
    dataServiceClient.SaveChanges();
    

Testování aplikace

Sestavte a spusťte aplikaci, abyste ověřili, že můžete zobrazit a aktualizovat záznamy zákazníků:

  1. V nabídce Sestavení klikněte na Sestavit řešení. Ověřte, že se řešení sestaví bez chyb.

  2. Stiskněte Ctrl+F5.

    Visual Studio spustí projekt AdventureWorksService bez ladění.

  3. V Průzkumník řešení klikněte pravým tlačítkem myši na projekt AdventureWorksSalesEditor.

  4. V místní nabídce (místní nabídka) klikněte v části Ladění na tlačítko Spustit novou instanci.

    Aplikace se spustí. Zkontrolujte:

    • Textová pole zobrazují různá pole dat od prvního záznamu prodeje, který má ID prodejní objednávky 71774.

    • Kliknutím na >< tlačítka můžete procházet další záznamy o prodeji.

  5. Do některého z prodejních záznamů zadejte nějaký text do pole Komentář a potom klepněte na tlačítko Uložit změny.

  6. Zavřete aplikaci a spusťte aplikaci znovu ze sady Visual Studio.

  7. Přejděte na záznam o prodeji, který jste změnili, a ověřte, že změna po zavření a opětovném otevření aplikace přetrvává.

  8. Zavřete aplikaci.

Další kroky

Po dokončení tohoto návodu můžete provést následující související úlohy: