- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- gban: Ingyen kellene, de tegnapra
- sivi151: Framework csendesen felvette a magyar billentyűzetet
- aquark: A ló túloldalán (Intel-AMD szivatás)
- sellerbuyer: Milyen laptopot vegyek? Segítek: semmilyet!
- Luck Dragon: Asszociációs játék. :)
- Amazon Kindle JailBreak
- Imilenni: Egy kis depi (szösszenet inkább), remélem elfér itt :) 3#
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
Új hozzászólás Aktív témák
-
Gregorius
őstag
Felteszem a VS 2008 SP1-et már telepítetted. Ha nem, pótold.
Az alapok:
1. Végy egy projektet
2. Adj hozzá egy új elemet: LINQ to SQL Classes. (Az ADO.NET Entity Data Model is hasonló célú, de a LINQ to SQL könnyebb és gyorsabb egyszerű adatbáziskezelésre, bár van benne néhány kellemetlenség, amit egyre fárasztóbb körbelőni, ahogy bonyolódik az alkalmazásod.) Ne felejts el nevet adni a fájlnak, legyen mondjuk EShop.dbml.
3. Kapsz egy üres felületet. Tanács szerint nyisd meg a Server Explorert, ha itt nem látod az adatbázisod, akkor fent ott van a "Connect to Database" gombóc, azzal hozzá kell adni. Majd ugyanebben az ablakban maradva kiválogatod, hogy az adatbázisokból mivel akarsz foglalkozni és egyszerűen ráhúzod az üres felületre. Mentés, bezárás.És ennyi, az infrastruktúra egyik fele készen van. A következő módon tudsz pl. egy tábla tartalmából listát csinálni:
List<Customers> customers;
using( var db = new EShopDataClasses() )
{
customers = db.Customers.ToList();
}A WPF oldal egy kicsit gáz, ugyanis habár a WPF-nek ezerszer jobb (lesz) az adatkötése (mihelyst rendes designer támogatás is lesz hozzá), utolsó értesüléseim szerint a WPF még nem rendelkezik olyan szofisztikált griddel, mint a WinForms. (A CodePlexen már van valami előzetes változat, amibe csak beledobod az adatot és mindent elintéz, de még nem az igazi) Úgyhogy inkább dolgozzunk azzal, amink van és csináljunk egy egyszerű megjelenített listát, amiben még csak lépkedni sem lehet kurzorral.
Ha WPF appot hoztál létre, akkor elvileg már van egy Window1.xaml-ed, használjuk ezt. Fejléc is kell, úgyhogy egy StackPanelben egymás alá rakjuk a fejlécet és egy ItemsControlt, ami a lista elemeit jeleníti meg. (Haladóknak van HeaderedItemsControl, de ott stílusokkal is kell vacakolni.) Kissé fapados és kézihajtányos, de erre a célra most jó lesz.
Lévén szeretnénk ha a fejléc és a tartalom nem csúszna el egymástól, mindkét helyen egy gridet fogunk használni közös méretezéssel. Az egyszerűség kedvéért most csak két oszlopot csinálok meg. A fejléc grid így néz ki:<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Customer ID" />
<TextBlock Grid.Column="1" Text="Company name" />
</Grid>A tartalomsablon szinte azonos vele:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding CustomerID}" />
<TextBlock Grid.Column="1" Text="{Binding CompanyName}" />
</Grid>Ahol a Binding mondja meg, hogy oda majd a CustomerID illetve a CompanyName mező kerül. A fix méretezés kicsit gáz, rá lehet venni a grideket, hogy együtt méreteződjenek, de az már a haladó kurzus része.
Az egész összeépítve:<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Customer ID" />
<TextBlock Grid.Column="1" Text="Company name" />
</Grid>
<ItemsControl Name="DataList" ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding CustomerID}" />
<TextBlock Grid.Column="1" Text="{Binding CompanyName}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>Itt két dolog van, amit még nem érintettem: az ItemsControlon a Name teszi lehetővé, hogy kódból hivatkozzunk rá, továbbá még meg kell adni az ItemsControlnak, hogy az elemeit honnan vegye. Ez legyen egyszerűen {Binding}, akkor a saját DataContext-jéből veszi az elemeket, azt pedig kódból máris beállítjuk a főablak Loaded eseménykezelőjében, itt ér össze a WPF és a fentebb lekért adat:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
using( var db = new EShopDataContext() )
{
this.DataList.DataContext = db.Customers.Take(10).ToList();
}
}És már készen is vagyunk, el lehet indítani, lehet csodálkozni vagy borzonkodni a gagyi adatlistánkon. Hogy ne hányja tele a képernyőt csak az első 10 rekordot kéri le a fenti kód. Ha az összes kell, egyszerűen töröld ki a Take(10)-et, viszont akkor úgy kell módosítani a layoutot is, hogy működjön a scrollozás.
Ha esetleg komolyabb adatkezelő projektbe fogsz, akkor a WPF-et a helyedben inkább hanyagolnám és maradnék WinForms alatt, ott használható az ArchElf által emlegetett DataGridView is, azt meg úgy szabhatod testre, ahogy tetszik.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- 5530 15.6" FHD IPS i5-1235U 16GB 256GB NVMe magyar vbill ujjlolv IR kam gar
- AMD RYZEN 3 - 5 / DDR4 / NVME SSD / HDMI / Normál magas vga is rakhato bele , nem SFF méret
- X1 Yoga 6th 14" 4K+ IPS érintői7-1185G7 16GB 256GB NVMe ujjlolv IR kam aktív toll gar
- Gamer PC-Számítógép! Csere-Beszámítás! I7 12700E / RTX 3070Ti / 32GB DDR5 / 1 TB SSD
- SAMSUNG Odyssey 49" OLED G9 LS49DG950SUXDU monitor - 240hz
- Készpénzes / Utalásos Videokártya és Hardver felvásárlás! Személyesen vagy Postával!
- DELL PowerEdge R630 rack szerver - 2xE5-2680v4 (28c/ 56t, 2.4/3.3GHz), 128GB RAM, 10G, áfás szla
- Eladó karcmentes Apple iPhone 13 128GB / 12 hó jótállás
- Bomba ár! Dell Latitude E5570 Touch - i5-6300U I 8GB I 256SSD I 15,6" FHD I HDMI I CAM I W10 I Gari
- BESZÁMÍTÁS! Asus B450 R7 5700X 32GB DDR4 1TB SSD RX 6800 16GB Corsair 750D Airflow Thermaltake 750W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest