Megosztás a következőn keresztül:


WPF-vezérlők kötése WCF-adatszolgáltatáshoz

Ebben az útmutatóban egy olyan WPF-alkalmazást fog létrehozni, amely adatkötött vezérlőket tartalmaz. A vezérlők olyan ügyfélrekordokhoz vannak kötve, amelyek egy WCF Data Service-ben vannak beágyazva. Olyan gombokat is hozzáad, amelyekkel az ügyfelek megtekinthetik és frissíthetik a rekordokat.

Ez az útmutató a következő feladatokat mutatja be:

  • Az AdventureWorksLT mintaadatbázis adataiból létrehozott entitásadatmodell létrehozása.

  • Olyan WCF-adatszolgáltatás létrehozása, amely egy WPF-alkalmazás számára teszi elérhetővé az entitásadat-modellben lévő adatokat.

  • Adathoz kötött vezérlők létrehozása az Adatforrások ablak elemeinek a WPF-tervezőbe húzásával.

  • Olyan gombok létrehozása, amelyek előre- és hátrafelé navigálnak az ügyfélrekordokon.

  • Olyan gomb létrehozása, amely a vezérlőkben lévő adatok módosításait menti a WCF Data Service-be és az alapul szolgáló adatforrásba.

Megjegyzés:

A cikkben található utasítások a Visual Studióban elérhető interaktív fejlesztési felület (IDE) legújabb verzióját mutatják be. Előfordulhat, hogy a számítógép különböző neveket vagy helyeket jelenít meg a felhasználói felület egyes elemeihez. Előfordulhat, hogy a Visual Studio egy másik verzióját vagy különböző környezeti beállításokat használ. További információ: Ideszemélyre szabása.

Előfeltételek

Az útmutató elvégzéséhez a következő összetevőkre van szüksége:

  • Visual Studio

  • Hozzáférés az SQL Server vagy az SQL Server Express futó példányához, amelyhez csatolva van az AdventureWorksLT mintaadatbázis. Az adatbázis letöltéséhez tekintse meg az AdventureWorks mintaadatbázisait

Az alábbi fogalmak előzetes ismerete szintén hasznos, de nem szükséges az útmutató elvégzéséhez:

A szolgáltatásprojekt létrehozása

  1. Ezt az útmutatót egy C# vagy Visual Basic ASP.NET webalkalmazás-projekt létrehozásával kezdheti el. Nevezze el az AdventureWorksService projektet.

  2. A Megoldáskezelőben kattintson a jobb gombbal a Default.aspx , és válassza a Törlés parancsot. Ez a fájl nem szükséges az útmutatóhoz.

Entitásadat-modell létrehozása a szolgáltatáshoz

Ha egy WCF-adatszolgáltatás használatával szeretne adatokat elérhetővé tenni egy alkalmazás számára, meg kell határoznia egy adatmodellt a szolgáltatáshoz. A WCF Data Service kétféle adatmodellt támogat: entitás adatmodelleket és egyéni adatmodelleket, amelyek az interfészt megvalósító IQueryable<T> közös nyelvi futtatókörnyezeti (CLR-) objektumok használatával vannak definiálva. Ebben az útmutatóban egy entitásadat-modellt hoz létre az adatmodellhez.

  1. A Project menüben kattintson az Új elem hozzáadásaopcióra.

  2. A Telepített sablonok listában kattintson az Adatok elemre, majd válassza ki az ADO.NET Entitásadatmodell projektelemet.

  3. Módosítsa a nevet a következőre AdventureWorksModel.edmx, és kattintson a Hozzáadás gombra.

    Megnyílik az Entitásadatmodell varázsló.

  4. A Modelltartalom kiválasztása lapon kattintson a Létrehozás adatbázisból elemre, majd a Tovább gombra.

  5. Az Adatkapcsolat kiválasztása lapon válassza az alábbi lehetőségek egyikét:

    • Ha az AdventureWorksLT mintaadatbázishoz adatkapcsolat érhető el a legördülő listában, jelölje ki.

    • Kattintson az Új kapcsolat elemre, és hozzon létre egy kapcsolatot az AdventureWorksLT-adatbázissal.

  6. Az Adatkapcsolat kiválasztása lapon győződjön meg arról, hogy az App.Configban az entitáskapcsolat mentése beállítás be van jelölve, majd válassza a Tovább gombot.

  7. Az Adatbázis-objektumok kiválasztása lapon bontsa ki a Táblák elemet, majd válassza a SalesOrderHeader táblát.

  8. Kattintson a Finish (Befejezés) gombra.

A szolgáltatás létrehozása

Hozzon létre egy WCF-adatszolgáltatást, amellyel az entitásadat-modellben lévő adatokat közzéteheti egy WPF-alkalmazás számára:

  1. A Projekt menüben válassza az Új elem hozzáadása lehetőséget.

  2. A Telepített sablonok listában kattintson a Web gombra, majd válassza ki a WCF Data Service projektelemet.

  3. Írja be AdventureWorksService.svca Név mezőbe, és kattintson a Hozzáadás gombra.

    A Visual Studio hozzáadja a AdventureWorksService.svc-t a projekthez.

A szolgáltatás konfigurálása

A szolgáltatást úgy kell konfigurálnia, hogy a létrehozott entitásadat-modellen működjön:

  1. A kódfájlban AdventureWorks.svc cserélje le az AdventureWorksService osztály deklarációját a következő kódra.

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

    Ez a kód frissíti az AdventureWorksService osztályt, hogy egy olyan DataService<T> osztályból származzon, amely az entitásadat-modell AdventureWorksLTEntities objektumkörnyezeti osztályán működik. Emellett frissíti a InitializeService metódust, hogy a szolgáltatás ügyfelei teljes olvasási/írási hozzáférést engedélyezzenek az SalesOrderHeader entitáshoz.

  2. Hozza létre a projektet, és ellenőrizze, hogy hiba nélkül épül-e fel.

A WPF-ügyfélalkalmazás létrehozása

A WCF Data Service adatainak megjelenítéséhez hozzon létre egy új WPF-alkalmazást a szolgáltatáson alapuló adatforrással. Az útmutató későbbi részében adatkötésű vezérlőket fog hozzáadni az alkalmazáshoz.

  1. A Megoldáskezelőben kattintson a jobb gombbal a megoldás csomópontjára, kattintson a Hozzáadás parancsra, és válassza az Új projekt lehetőséget.

  2. Az Új projekt párbeszédpanelen bontsa ki a Visual C# vagy a Visual Basic elemet, majd válassza a Windowst.

  3. Válassza ki a WPF-alkalmazás projektsablont.

  4. Írja be AdventureWorksSalesEditora Név mezőbe, és kattintson az OK gombra.

    A Visual Studio hozzáadja a AdventureWorksSalesEditor projektet a megoldáshoz.

  5. Az Adatok menüben kattintson az Adatforrások megjelenítése elemre.

    Megnyílik az Adatforrások ablak.

  6. Az Adatforrások ablakban kattintson az Új adatforrás hozzáadásaelemre.

    Megnyílik az Adatforrás konfigurálása varázsló.

  7. A varázsló Adatforrástípus kiválasztása lapján válassza a Szolgáltatás lehetőséget, majd a Tovább gombot.

  8. A Szolgáltatáshivatkozás hozzáadása párbeszédpanelen kattintson a Felfedezés gombra.

    A Visual Studio megkeresi az aktuális megoldást az elérhető szolgáltatások között, és hozzáadja AdventureWorksService.svc az elérhető szolgáltatások listájához a Szolgáltatások mezőben.

  9. A Névtér mezőbe írja be az AdventureWorksService nevet.

  10. A Szolgáltatások mezőben kattintson az AdventureWorksService.svc elemre, majd válassza az OK gombot.

    A Visual Studio letölti a szolgáltatásinformációkat, majd visszatér az Adatforrás konfigurálása varázslóhoz.

  11. A Szolgáltatás hozzáadása referenciája lapon kattintson a Befejezés gombra.

    A Visual Studio olyan csomópontokat ad hozzá, amelyek a szolgáltatás által visszaadott adatokat képviselik az Adatforrások ablakban.

A felhasználói felület meghatározása

Adjon hozzá több gombot az ablakhoz a WPF-tervező XAML-jének módosításával. Az útmutató későbbi részében olyan kódot fog hozzáadni, amely lehetővé teszi a felhasználók számára az értékesítési rekordok megtekintését és frissítését ezen gombok használatával.

  1. A Megoldáskezelőben kattintson duplán a MainWindow.xaml elemre.

    Az ablak megnyílik a WPF-tervezőben.

  2. A tervező XAML nézetében adja hozzá a következő kódot a <Grid> címkék közé:

    <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. Készítse el a projektet.

Az adathoz kötött vezérlők létrehozása

Az ügyfélrekordokat megjelenítő vezérlők létrehozásához húzza a csomópontot az SalesOrderHeadersAdatforrások ablakból a tervezőbe.

  1. Az Adatforrások ablakban kattintson a SalesOrderHeaders csomópont legördülő listájának menüjére, és válassza a Részletek lehetőséget.

  2. Bontsa ki a SalesOrderHeaders csomópontot.

  3. Ebben a példában egyes mezők nem jelennek meg, ezért kattintson a legördülő lista menüre a következő csomópontok mellett, és válassza a Nincs lehetőséget:

    • CreditCardApprovalCode

    • ModifiedDate

    • OnlineOrderFlag

    • RevisionNumber

    • rowguid

    Ez a művelet megakadályozza, hogy a Visual Studio a következő lépésben adathoz kötött vezérlőket hozzon létre ezekhez a csomópontokhoz. Ehhez az útmutatóhoz tegyük fel, hogy a végfelhasználónak nem kell látnia ezeket az adatokat.

  4. Az Adatforrások ablakban húzza a SalesOrderHeaders csomópontot a gombokat tartalmazó sor alatti rácssorra.

    A Visual Studio létrehoz egy XAML-t és egy olyan kódot, amely olyan vezérlőket hoz létre, amelyek a Termék táblában lévő adatokhoz vannak kötve. A létrehozott XAML-ről és kódról további információt a WPF-vezérlők kötése a Visual Studióban lévő adatokhoz című témakörben talál.

  5. A tervezőben kattintson az Ügyfélazonosító címke melletti szövegdobozra.

  6. A Tulajdonságok ablakban jelölje be az IsReadOnly tulajdonság melletti jelölőnégyzetet.

  7. Állítsa be az IsReadOnly tulajdonságot az alábbi szövegmezők mindegyikéhez:

    • Beszerzési rendelés száma

    • Értékesítési rendelés azonosítója

    • Értékesítési rendelés száma

Adatok betöltése a szolgáltatásból

A szolgáltatás proxy objektum használatával betölthet értékesítési adatokat a szerverről. Ezután rendelje hozzá a visszaadott adatokat a WPF ablak adatforrásához CollectionViewSource .

  1. A tervezőben az Window_Loaded eseménykezelő létrehozásához kattintson duplán a következő szövegre: MainWindow.

  2. Cserélje le az eseménykezelőt a következő kódra. Győződjön meg arról, hogy a localhost kódban szereplő címet a fejlesztői számítógépen található helyi gazdagépcímre cseréli.

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

Írjon be egy kódot, amely lehetővé teszi a felhasználók számára az értékesítési rekordok görgetését a < és > gombok használatával.

  1. A tervezőben kattintson duplán az < ablakfelületen található gombra.

    A Visual Studio megnyitja a kód mögötti fájlt, és létrehoz egy új backButton_Click eseménykezelőt az Click eseményhez.

  2. Adja hozzá a következő kódot a létrehozott backButton_Click eseménykezelőhöz:

    if (ordersViewSource.View.CurrentPosition > 0)
        ordersViewSource.View.MoveCurrentToPrevious();
    
  3. Térjen vissza a tervezőhöz, és kattintson duplán a > gombra.

    A Visual Studio megnyitja a kód mögötti fájlt, és létrehoz egy új nextButton_Click eseménykezelőt az Click eseményhez.

  4. Adja hozzá a következő kódot a létrehozott nextButton_Click eseménykezelőhöz:

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

Értékesítési rekordok módosításainak mentése

Olyan kód hozzáadása, amely lehetővé teszi a felhasználók számára az értékesítési rekordok módosításainak megtekintését és mentését a Módosítások mentése gombbal:

  1. A tervezőben kattintson duplán a Módosítások mentése gombra.

    A Visual Studio megnyitja a kód mögötti fájlt, és létrehoz egy új saveButton_Click eseménykezelőt az Click eseményhez.

  2. Adja hozzá a következő kódot az saveButton_Click eseménykezelőhöz.

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

Az alkalmazás tesztelése

Hozza létre és futtassa az alkalmazást az ügyfélrekordok megtekintésének és frissítésének ellenőrzéséhez:

  1. A Build menüben kattintson a Megoldás létrehozása elemre. Ellenőrizze, hogy a megoldás hiba nélkül épül-e fel.

  2. Nyomja le a CtrlF5 billentyűkombinációt+.

    A Visual Studio hibakeresés nélkül elindítja az AdventureWorksService projektet.

  3. A Megoldáskezelőben kattintson a jobb gombbal az AdventureWorksSalesEditor projektre.

  4. Kattintson a jobb gombbal a menüre (helyi menü) a Hibakeresés csoportban kattintson az Új példány indítása parancsra.

    Az alkalmazás fut. Ellenőrizze a következőket:

    • A szövegmezők az első értékesítési rekord különböző adatmezőit jelenítik meg, amelyek értékesítési rendelésazonosítója 71774.

    • Az egyéb értékesítési rekordok között úgy navigálhat, hogy a > vagy a < gombra kattint.

  5. Az egyik értékesítési rekordba írjon be egy szöveget a Megjegyzés mezőbe, majd válassza a Módosítások mentése lehetőséget.

  6. Zárja be az alkalmazást, majd indítsa újra az alkalmazást a Visual Studióból.

  7. Lépjen a módosított értékesítési rekordra, és ellenőrizze, hogy a módosítás megmarad-e az alkalmazás bezárása és újbóli megnyitása után.

  8. Zárja be az alkalmazást.

Következő lépések

Az útmutató elvégzése után a következő kapcsolódó feladatokat hajthatja végre: