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é 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
Spusťte tento návod vytvořením projektu webové aplikace jazyka C# nebo Visual Basic ASP.NET. Pojmenujte projekt AdventureWorksService.
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.
V nabídce Projekt klepněte na tlačítko Přidat novou položku.
V seznamu Nainstalované šablony klepněte na tlačítko Data a pak vyberte položku projektu ADO.NET Entity Data Model .
Změňte název na
AdventureWorksModel.edmx
a klikněte na Přidat.Otevře se průvodce Entity Data Model .
Na stránce Zvolit obsah modelu klepněte na tlačítko Generovat z databáze a klepněte na tlačítko Další.
Na stránce Zvolit datové připojení 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 Nové připojení a vytvořte připojení k databázi AdventureWorksLT.
Na stránce Zvolit datové připojení se ujistěte, že je vybraná možnost Uložit nastavení připojení entity v App.Config a pak vyberte Další.
Na stránce Zvolit databázové objekty rozbalte tabulky a pak vyberte tabulku SalesOrderHeader.
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:
V nabídce Projekt vyberte Přidat novou položku.
V seznamu Nainstalované šablony klepněte na tlačítko Web a pak vyberte položku projektu WCF Data Service.
Do pole Název zadejte
AdventureWorksService.svc
a 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:
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é metoduInitializeService
, aby klientům služby umožňovala úplný přístup pro čtení a zápis k entitěSalesOrderHeader
.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.
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.
V dialogovém okně Nový projekt rozbalte Visual C# nebo Visual Basic a pak vyberte Windows.
Vyberte šablonu projektu aplikace WPF.
Do pole Název zadejte
AdventureWorksSalesEditor
a klepněte na tlačítko OK.Visual Studio přidá
AdventureWorksSalesEditor
projekt do řešení.V nabídce Data klikněte na Zobrazit zdroje dat.
Otevře se okno Zdroje dat.
V okně Zdroje dat klikněte na Přidat nový zdroj dat.
Otevře se Průvodce konfigurací zdroje dat.
Na stránce Zvolit typ zdroje dat v průvodci vyberte Service (Služba) a pak vyberte Next (Další).
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 .Do pole Obor názvů zadejte AdventureWorksService.
V poli Služby klepněte na tlačítko AdventureWorksService.svc a pak vyberte OK.
Visual Studio stáhne informace o službě a pak se vrátí do průvodce konfigurací zdroje dat.
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.
V Průzkumník řešení poklikejte na MainWindow.xaml.
Okno se otevře v návrháři WPF.
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>
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.
V okně Zdroje dat klikněte na rozevírací nabídku pro uzel SalesOrderHeaders a vyberte Podrobnosti.
Rozbalte uzel SalesOrderHeaders.
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
Datum změny
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.
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.
V návrháři klikněte na textové pole vedle popisku ID zákazníka.
V okně Vlastnosti zaškrtněte políčko vedle vlastnosti IsReadOnly .
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.
Chcete-li v návrháři vytvořit obslužnou rutinu
Window_Loaded
události, poklikejte na text, který přečte: MainWindow.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(); }
Navigace v prodejních záznamech
Přidejte kód, který uživatelům umožňuje procházet záznamy o prodeji pomocí tlačítek<.>
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.Do vygenerované obslužné
backButton_Click
rutiny události přidejte následující kód: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.Do vygenerované obslužné
nextButton_Click
rutiny události přidejte následující kód:
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 :
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.Do obslužné rutiny
saveButton_Click
události přidejte následující kód.
Testování aplikace
Sestavte a spusťte aplikaci, abyste ověřili, že můžete zobrazit a aktualizovat záznamy zákazníků:
V nabídce Sestavení klikněte na Sestavit řešení. Ověřte, že se řešení sestaví bez chyb.
Stiskněte Ctrl+F5.
Visual Studio spustí projekt AdventureWorksService bez ladění.
V Průzkumník řešení klikněte pravým tlačítkem myši na projekt AdventureWorksSalesEditor.
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.
Do některého z prodejních záznamů zadejte nějaký text do pole Komentář a pak vyberte Uložit změny.
Zavřete aplikaci a spusťte aplikaci znovu ze sady Visual Studio.
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á.
Zavřete aplikaci.
Další kroky
Po dokončení tohoto návodu můžete provést následující související úlohy:
Naučte se používat okno Zdroje dat v sadě Visual Studio k vytvoření vazby ovládacích prvků WPF k jiným typům zdrojů dat. Další informace najdete v tématu Vytvoření vazby ovládacích prvků WPF k datové sadě.
Naučte se používat okno Zdroje dat v sadě Visual Studio k zobrazení souvisejících dat (tj. dat v relaci nadřazený-podřízený) v ovládacích prvcích WPF. Další informace naleznete v tématu Návod: Zobrazení souvisejících dat v aplikaci WPF.