162 lines
7.5 KiB
Plaintext
162 lines
7.5 KiB
Plaintext
Mi az a wpf?
|
|
|
|
A windows presentation foundation a windows forms utódnak tekinthető asztali alkalmazások fejlesztése terén.
|
|
Bár a wpf számos téren eltér a tradicionálisnak tekinthető windows forms hoz képest, mégis több olyan elvre támaszkodik, amely már meglévő asztali keretrendszerek alapját képezi.
|
|
Az egyyik legnagyobb és egyben legfontosabb különbség, hogy az alkalmazás megjelenéséért felelős kód elkülönül az alkalmazás funkcióit leíró kódtol.
|
|
|
|
Szakítva a Winformos hagyományokkal, a WPF alapjául szolgáló grafikus technológia a GDI/GDI+ helyett már a DirectX.
|
|
A directx közvetlenül elérésének köszönhetően tetszőleges típusú felhasználói felületet hozhatunk létre.
|
|
Tervezhető akár komplex háromdimenziós grafika, de üzleti alkalmazások esetében is kiaknázhatók a gazdag grafikai hatások.
|
|
A hardveres gyorsításnak köszönhetően a DirectX a grafikai rendelés során amennyire lehetséges tehermentesíteni ....
|
|
|
|
WPF nek a grafikai elemei már nem raszteresek, hanem vektoralapúak.
|
|
Ebből következően az egyes elemek tetszőlegesen átméretezhetőek.
|
|
További nagy előnye hogy a vektor alapú képek kevesebb helyet foglalnak a raszteres elemekhez képest.
|
|
ugyanakkor meg kell említeni, hogy a wpf továbbra is támogatja a raszter grafikát.
|
|
|
|
wpf jellemzői
|
|
dokumentumok és nyomtatás
|
|
biztonság, hozzáférhetőség és lokalizáció
|
|
együttműködést kínál a következővel windows űrlaptervező
|
|
a direct3d grafikus alkalmazásokban használják, ahol a teljesítmány fontos
|
|
GPU-t használ megjelenítéshez
|
|
a vektor alapú grafika lehetővé teszi az átméretezést minőségromlás nélkül
|
|
A WPF támogatja a lebegőpontos logikai pixelrendszert és a 32 bites ARGB színt
|
|
stílusok és vezérlősablonok újradefiniálása
|
|
nemzetközi betűtípusok építése összetett betűtípusokból
|
|
a wpf szövegmegjelenítés segít a cleartype technológia előnyeinek kihazsnálásában
|
|
lehetővé teszi az előre rendelt szöveg gyorsítótárazási technikájának használatát a videómemóriában
|
|
erőforrás alapú megközelítés minden vezérléshez
|
|
a bemutató időzítőit a wpf inicializálja és kezeli
|
|
|
|
A videó és az animáció közötti kapcsolat szintén támogatott
|
|
a wpfben a stílus olyan tulajdonságok halamza, amelyeket a vizuális megjelenítéshez használt tartalomra kell alkalmazni.
|
|
a wpf sablonjai segítenek a dokumentumok UI érékének megváltoztatásában
|
|
a parancsok az események elvontabb és lazábban kapcsolt változatai
|
|
a wpf parancsok támogatása csökkenti a megírandó kód mennyiségét
|
|
|
|
|
|
A wpf többrétegű architektúrájának legelső szintjén a PresentationFramework.dll található.
|
|
Ezt használjuk fejlesztés közben, itt vannak implementálva a küéomvüző vezérlők .
|
|
|
|
PresentationFramework.dll számára az alaposztályokat (UIElement, Visual) a PresentationCore.dll biztosítja.
|
|
Ezekből az osztályból származnak többek között a formák (shape) és a vezérlők (controls).
|
|
A windowsvase.dll a wpf alapvető működéséhez szükséges objektumosztályokat tartalmazza (DispatcherObject, DependencyObject).
|
|
|
|
A WPF névterek a System.Windows névtérben helyezkednek el.
|
|
|
|
System.Object
|
|
A WPF összes osztálya a System.Objectből származik.
|
|
A WPF legfontosabb komponensei a PresentationFramework, PresentationCore és a milcore, tartalmazzák a wpf legfontosabb kódrészleteit.
|
|
Ezek köüzül a milcore az egyetlen nem menedzselt kódban írt komponens.
|
|
|
|
XAML
|
|
|
|
(eXtensible Application Markup Language) egy XML alapú dekleratív jelölőnyelv, amely a .NET keretrendszer modelljébe illeszkedve leegyszerűsíti a grafikus felhasználói felület kialakítását.
|
|
XAML dekleratív nyelv nyelvtani szabályrendszere nagyn egyszerű.
|
|
Általános tervezési alapelve, hogy a XAML dokumentumot definiál a .NET osztály egy példánya.
|
|
|
|
XAML nyelv hasznlatának előnyei
|
|
|
|
AZ XAML elválasztja a front-end megjelenítést a háttér logikától
|
|
|
|
Az XAML a legegyszerűbb módszer a felhasználói felületek ábrázolására
|
|
|
|
A XAML hatékonyan dolgozik az eszközökkel
|
|
|
|
|
|
|
|
Külső és belső margók
|
|
Margin
|
|
|
|
GRID
|
|
<Grid ShowGridLines="True">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition />
|
|
<RowDefinition />
|
|
<RowDefinition />
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition />
|
|
<ColumnDefinition />
|
|
</Grid.ColumnDefinitions>
|
|
</Grid>
|
|
|
|
igatítások
|
|
Az egyes gyerekelemeket természetesen függőlegesen és vízszintesen is igazíthatjuk.
|
|
HorizontalAlignment - vízszintes igazítás
|
|
VerticalAlignment
|
|
|
|
horizontal értékei: left center right stretch
|
|
|
|
vertical: top bottom center stretch
|
|
|
|
StackPanel
|
|
Alapértelmezés szerint a benne elhelyezett elemeket egymás alá rendezve listaszerűen jeleníti meg.
|
|
|
|
<Grid>
|
|
<StackPanel Width="200" Orientation="Horizontal">
|
|
<Button Height="20" Content="button 1" Margin="10"></Button>
|
|
<Button Height="20" Content="button 2" Margin="10"></Button>
|
|
<Button Height="20" Content="button 3" Margin="10"></Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
|
|
Wrappanel
|
|
elemek egymás mellett vagy alatt való megjelenítésére alkalmas.
|
|
Amennyiben egy elem nem fér el a sorba, akkor az automatikusan a kövibe kerül.
|
|
|
|
<Grid Width="200" Height="200">
|
|
<WrapPanel>
|
|
<Ellipse Fill="Red" Height="40" Width="40"></Ellipse>
|
|
<Ellipse Fill="Red" Height="40" Width="40"></Ellipse>
|
|
<Ellipse Fill="Red" Height="40" Width="40"></Ellipse>
|
|
<Ellipse Fill="Red" Height="40" Width="40"></Ellipse>
|
|
<Ellipse Fill="Red" Height="40" Width="40"></Ellipse>
|
|
<Ellipse Fill="Red" Height="40" Width="40"></Ellipse>
|
|
<Ellipse Fill="Red" Height="40" Width="40"></Ellipse>
|
|
<Ellipse Fill="Red" Height="40" Width="40"></Ellipse>
|
|
</WrapPanel>
|
|
</Grid>
|
|
|
|
DockPanel
|
|
A DockPanel a StackPanel hez és a wrappanelhez képest már összetettebb elrendezések kialakításához használható.
|
|
Használható akár a Grid vezérlőt lecserélve gyökérelemként is.
|
|
<Grid>
|
|
<DockPanel LastChildFill="True">
|
|
<Button Content="Dock=Top" DockPanel.Dock="Top" Background="Beige"></Button>
|
|
<Button Content="Dock=Right" DockPanel.Dock="Right" Background="Gold"></Button>
|
|
<Button Content="Dock=Left" Background="Beige"></Button>
|
|
<Button Content="Dock=Bottom" DockPanel.Dock="Bottom" Background="Beige"></Button>
|
|
<Image Source="cat.png" Stretch="Fill"></Image>
|
|
</DockPanel>
|
|
</Grid>
|
|
|
|
GridSplitter
|
|
A gridsplitter rácsfelosztó vezétlő használatával lehetővé válik a program futása közben a rács sorainak és oszlopainak.
|
|
A Grid vezérlőben azon sorok,illetve oszlopok közé kell elhelyeznünk, amelyeket szeretnénk átméretezhetővé tenni.
|
|
|
|
A ResizeDirection tulajdonsággal állíthatjuk be, hogy sorokat, vagy oszlopokat szeretnénk átéretezni, a resizevehavior segítségével pedig a pontos működést tudjuk beállítani.
|
|
|
|
ResizeBehavior tulajdonság
|
|
|
|
BasedOnAlignment (igazítás alapja)
|
|
CurrentAndNext (aktuális és következő)
|
|
PreviousAndCurrent (előző és aktuális)
|
|
|
|
|
|
Canvas
|
|
A canvas pixel pontosan megadott elrendezést tesz lehetővé, ideális fix méretű alkalmazások elkészítéséhez.
|
|
A Canvas-on elhelyezett elemek poziciojat a Top-Left és a Bottom-Right tulajdonságok beállításával tehetjük meg.
|
|
|
|
|
|
Vezérlők
|
|
A következő vezérlők a ContentControl osztályból származnak.
|
|
Tartalmaznak egy speciális beágyazott elemet
|
|
(Content tulajdonság), amely valójában objektum típusú,
|
|
tehát tetszőleges tartalom elhelyezhető benne.
|
|
|
|
Button
|
|
|
|
|