Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här genomgången skapar du ett WPF-program som innehåller databundna kontroller. Kontrollerna är bundna till kundposter som kapslas in i en WCF-datatjänst. Du kommer också att lägga till knappar som kunder kan använda för att visa och uppdatera poster.
I den här genomgången tas följande aktiviteter upp:
Skapa en entitetsdatamodell som genereras från data i AdventureWorksLT-exempeldatabasen.
Skapa en WCF-datatjänst som exponerar data i entitetsdatamodellen för ett WPF-program.
Skapa en uppsättning databundna kontroller genom att dra objekt från fönstret Datakällor till WPF-designern.
Skapa knappar som navigerar framåt och bakåt genom kundposter.
Skapa en knapp som sparar ändringar i data i kontrollerna till WCF Data Service och den underliggande datakällan.
Anmärkning
Anvisningarna i den här artikeln illustrerar den senaste versionen av den interaktiva utvecklingsupplevelsen (IDE) som är tillgänglig i Visual Studio. Datorn kan visa olika namn eller platser för vissa av användargränssnittselementen. Du kanske använder en annan version av Visual Studio eller andra miljöinställningar. Mer information finns i Anpassa IDE-.
Förutsättningar
Du behöver följande komponenter för att slutföra den här genomgången:
Visual Studio
Åtkomst till en instans av SQL Server eller SQL Server Express som har AdventureWorksLT-exempeldatabasen kopplad till sig. Information om hur du laddar ned databasen finns i AdventureWorks exempeldatabaser
Förkunskaper om följande begrepp är också användbara, men krävs inte för att slutföra genomgången:
Datamodeller i WCF Data Services.
Entitetsdatamodeller och ADO.NET Entity Framework. Mer information finns i Översikt över Entity Framework.
WPF-databindning. Mer information finns i Översikt över databindning.
Skapa tjänstprojektet
Starta den här genomgången genom att skapa ett C#- eller Visual Basic-ASP.NET webbprogramprojekt . Ge projektet namnet AdventureWorksService.
Högerklicka på Default.aspx i Solution Explorer och välj Ta bort. Den här filen är inte nödvändig för genomgången.
Skapa en entitetsdatamodell för tjänsten
Om du vill exponera data för ett program med hjälp av en WCF-datatjänst måste du definiera en datamodell för tjänsten. WCF Data Service stöder två typer av datamodeller: Entitetsdatamodeller och anpassade datamodeller som definieras med hjälp av CLR-objekt (Common Language Runtime) som implementerar IQueryable<T> gränssnittet. I den här genomgången skapar du en entitetsdatamodell för datamodellen.
På menyn Project klickar du på Lägg till nytt objekt.
I listan Installerade mallar klickar du på Data och väljer sedan projektobjektet ADO.NET entitetsdatamodell .
Ändra namnet till
AdventureWorksModel.edmxoch klicka på Lägg till.Guiden Entitetsdatamodell öppnas.
På sidan Välj modellinnehåll klickar du på Generera från databasen och klickar på Nästa.
På sidan Välj dataanslutning väljer du något av följande alternativ:
Om en dataanslutning till AdventureWorksLT-exempeldatabasen är tillgänglig i listrutan väljer du den.
Klicka på Ny anslutning och skapa en anslutning till AdventureWorksLT-databasen.
På sidan Välj dataanslutning kontrollerar du att alternativet Spara entitetsanslutning i App.Config som är markerat och välj sedan Nästa.
På sidan Välj databasobjekt expanderar du Tabeller och väljer sedan tabellen SalesOrderHeader .
Klicka på Finish.
Skapa tjänsten
Skapa en WCF-datatjänst för att exponera data i entitetsdatamodellen för ett WPF-program:
På Projekt-menyn väljer du Lägg till nytt objekt.
I listan Installerade mallar klickar du på Webb och väljer sedan projektobjektet WCF Data Service .
I rutan Namn skriver du
AdventureWorksService.svcoch klickar på Lägg till.Visual Studio lägger
AdventureWorksService.svctill i projektet.
Konfigurera tjänsten
Du måste konfigurera tjänsten så att den fungerar på den entitetsdatamodell som du skapade:
AdventureWorks.svcI kodfilen ersätter du klassdeklarationen AdventureWorksService med följande kod.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); } }Den här koden uppdaterar klassen AdventureWorksService så att den härleds från en DataService<T> som körs på objektkontextklassen
AdventureWorksLTEntitiesi din entitetsdatamodell. Den uppdaterar ocksåInitializeServicemetoden så att tjänstens klienter får fullständig läs-/skrivåtkomst till entitetenSalesOrderHeader.Skapa projektet och kontrollera att det skapas utan fel.
Skapa WPF-klientprogrammet
Om du vill visa data från WCF Data Service skapar du ett nytt WPF-program med en datakälla som baseras på tjänsten. Senare i den här genomgången lägger du till databundna kontroller i programmet.
Högerklicka på lösningsnoden i Solution Explorer, klicka på Lägg till och välj Nytt projekt.
I dialogrutan Nytt projekt expanderar du Visual C# eller Visual Basic och väljer sedan Windows.
Välj projektmallen WPF-program .
I rutan Namn skriver du
AdventureWorksSalesEditoroch klickar på OK.Visual Studio lägger till
AdventureWorksSalesEditorprojektet i lösningen.På menyn Data klickar du på Visa datakällor.
Fönstret Datakällor öppnas.
I fönstret datakällor klickar du på Lägg till ny datakälla.
Guiden Konfiguration av datakälla öppnas.
På sidan Välj datakällatyp i guiden väljer du Tjänst och sedan Nästa.
I dialogrutan Lägg till tjänstreferens klickar du på Identifiera.
Visual Studio söker efter tillgängliga tjänster i den aktuella lösningen och lägger
AdventureWorksService.svctill i listan över tillgängliga tjänster i rutan Tjänster .I rutan Namnområde skriver du AdventureWorksService.
I rutan Tjänster klickar du på AdventureWorksService.svc och väljer sedan OK.
Visual Studio laddar ned tjänstinformationen och återgår sedan till guiden Konfiguration av datakälla .
På sidan Lägg till tjänstreferens klickar du på Slutför.
Visual Studio lägger till noder som representerar de data som returneras av tjänsten i fönstret Datakällor .
Definiera användargränssnittet
Lägg till flera knappar i fönstret genom att ändra XAML i WPF-designern. Senare i den här genomgången lägger du till kod som gör det möjligt för användare att visa och uppdatera försäljningsposter med hjälp av dessa knappar.
Dubbelklicka på MainWindow.xaml i Solution Explorer.
Fönstret öppnas i WPF-designern.
I XAML-vyn för designern lägger du till följande kod mellan taggarna
<Grid>:<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>Skapa projektet.
Skapa de databundna kontrollerna
Skapa kontroller som visar kundposter genom att dra SalesOrderHeaders-noden från fönstret Datakällor till designern.
I fönstret Datakällor klickar du på listmenyn för noden SalesOrderHeaders och väljer Information.
Expandera noden SalesOrderHeaders .
I det här exemplet visas inte några fält, så klicka på listrutan bredvid följande noder och välj Ingen:
CreditCardApprovalCode
ModifiedDate
OnlineOrderFlag
RevisionNumber
rowguid
Den här åtgärden förhindrar att Visual Studio skapar databundna kontroller för dessa noder i nästa steg. Anta att slutanvändaren inte behöver se dessa data för den här genomgången.
Dra noden SalesOrderHeaders från fönstret Datakällor till rutnätsraden under raden som innehåller knapparna.
Visual Studio genererar XAML och kod som skapar en uppsättning kontroller som är bundna till data i tabellen Produkt . Mer information om den genererade XAML och koden finns i Binda WPF-kontroller till data i Visual Studio.
Klicka på textrutan bredvid etiketten Kund-ID i designern.
I fönstret Egenskaper markerar du kryssrutan bredvid egenskapen IsReadOnly .
Ange egenskapen IsReadOnly för var och en av följande textrutor:
Inköpsordernummer
Försäljningsorder-ID
Försäljningsordernummer
Läsa in data från tjänsten
Använd tjänstproxyobjektet för att läsa in försäljningsdata från tjänsten. Tilldela sedan returnerade data till datakällan för CollectionViewSource i WPF-fönstret.
Om du vill skapa
Window_Loadedhändelsehanteraren i designern dubbelklickar du på texten som lyder: MainWindow.Ersätt händelsehanteraren med följande kod. Se till att du ersätter adressen i den
localhosthär koden med den lokala värdadressen på utvecklingsdatorn.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(); }
Navigera i försäljningsposter
Lägg till kod som gör det möjligt för användare att bläddra igenom försäljningsposter med hjälp av knapparna < och > .
Dubbelklicka på < knappen på fönsterytan i designern.
Visual Studio öppnar filen bakom koden och skapar en ny
backButton_Clickhändelsehanterare för Click händelsen.Lägg till följande kod i den genererade
backButton_Clickhändelsehanteraren:Gå tillbaka till designern och dubbelklicka på > knappen.
Visual Studio öppnar filen bakom koden och skapar en ny
nextButton_Clickhändelsehanterare för Click händelsen.Lägg till följande kod i den genererade
nextButton_Clickhändelsehanteraren:
Spara ändringar i försäljningsposter
Lägg till kod som gör det möjligt för användare att både visa och spara ändringar i försäljningsposter med hjälp av knappen Spara ändringar :
Dubbelklicka på knappen Spara ändringar i designern.
Visual Studio öppnar filen bakom koden och skapar en ny
saveButton_Clickhändelsehanterare för Click händelsen.Lägg till följande kod i händelsehanteraren för
saveButton_Click.
Testa programmet
Skapa och kör programmet för att kontrollera att du kan visa och uppdatera kundposter:
Klicka påBuild Solution (Skapa lösning) på Build-menyn. Kontrollera att lösningen skapas utan fel.
Tryck på Ctrl+F5.
Visual Studio startar AdventureWorksService-projektet utan att felsöka det.
Högerklicka på projektet AdventureWorksSalesEditor i Solution Explorer.
På högerklicksmenyn under Felsök klickar du på Starta ny instans.
Programmet körs. Kontrollera följande:
Textrutorna visar olika datafält från den första försäljningsposten, som har försäljningsorder-ID :t 71774.
Du kan klicka på knapparna > eller < för att navigera genom andra försäljningsposter.
I en av försäljningsposterna skriver du text i rutan Kommentar och väljer sedan Spara ändringar.
Stäng programmet och starta sedan programmet igen från Visual Studio.
Gå till den försäljningspost som du ändrade och kontrollera att ändringen kvarstår när du har stängt och öppnat programmet igen.
Stäng programmet.
Nästa steg
När du har slutfört den här genomgången kan du utföra följande relaterade uppgifter:
Lär dig hur du använder fönstret Datakällor i Visual Studio för att binda WPF-kontroller till andra typer av datakällor. Mer information finns i Binda WPF-kontroller till en datauppsättning.
Lär dig hur du använder fönstret Datakällor i Visual Studio för att visa relaterade data (dvs. data i en överordnad-underordnad relation) i WPF-kontroller. Mer information finns i Genomgång: Visa relaterade data i ett WPF-program.