Asztali útmutató (WPF .NET)
Üdvözöljük a Windows Presentation Foundation (WPF) asztali útmutatójában, amely egy felbontásfüggetlen felhasználói felületi keretrendszer, amely vektoralapú renderelési motort használ a modern grafikus hardver előnyeinek kihasználására. A WPF az alkalmazásfejlesztési funkciók átfogó készletét kínálja, amelyek tartalmazzák az bővíthető alkalmazásjelölési nyelvet (XAML), vezérlőket, adatkötést, elrendezést, 2D és 3D ábrákat, animációkat, stílusokat, sablonokat, dokumentumokat, adathordozókat, szöveget és tipográfiát. A WPF a .NET része, így olyan alkalmazásokat hozhat létre, amelyek a .NET API más elemeit is tartalmazzák.
A WPF két implementációval érhető el:
.NET verziója (ez az útmutató):
A WPF nyílt forráskódú implementálása GitHub, amely .NET-en fut. Az XAML-tervezőnek legalább Visual Studio 2019 16.8-askell. A .NET verziójától függően azonban előfordulhat, hogy a Visual Studio újabb verzióját kell használnia.
Bár a .NET platformfüggetlen technológia, a WPF csak Windows rendszeren fut.
.NET-keretrendszer 4 verziója:
A Visual Studio 2019 és a Visual Studio 2017 által támogatott WPF .NET-keretrendszer-implementációja.
A .NET-keretrendszer 4 a .NET csak Windows rendszerű verziója, és Windows operációsrendszer-összetevőnek számít. A WPF ezen verziója a .NET-keretrendszerrel van elosztva. A WPF .NET-keretrendszer verziójával kapcsolatos további információkért lásd .NET-keretrendszerhez készült WPF bemutatása.
Ez az áttekintés az újonnan érkezők számára készült, és a WPF fő képességeit és fogalmait ismerteti. A WPF-alkalmazások létrehozásának módjáról a oktatóanyagból tájékozódhat: Új WPF-alkalmazás létrehozása.
Miért érdemes frissíteni a .NET-keretrendszerről?
Amikor az alkalmazást .NET-keretrendszerről .NET-re frissíti, a következőkben fog részesülni:
- Jobb teljesítmény
- Új .NET API-k
- A legújabb nyelvi fejlesztések
- Továbbfejlesztett akadálymentesség és megbízhatóság
- Frissített eszközkészlet és egyebek
Az alkalmazás frissítéséről az A WPF asztali alkalmazás frissítése .NET 7-recímű témakörben olvashat.
Programozás WPF-fel
A WPF a .NET-típusok részhalmazaként létezik, amelyek többnyire a System.Windows névtérben találhatók. Ha korábban olyan .NET-keretrendszerekkel rendelkező alkalmazásokat készített, mint a ASP.NET és a Windows Forms, az alapvető WPF-programozási élménynek ismerősnek kell lennie:
- Osztályok példányosítása
- Tulajdonságok beállítása
- Hívási módszerek
- Események kezelése
A WPF több olyan programozási szerkezetet tartalmaz, amely javítja a tulajdonságokat és eseményeket: függőségi tulajdonságokat és irányított eseményeket.
Jelölőnyelv és háttérkód
A WPF lehetővé teszi, hogy jelölőt és kód hátterethasználva dolgozzon ki egy alkalmazást, amely az ASP.NET fejlesztők számára ismerős lehet. Általában XAML jelölőnyelv használatával valósítja meg az alkalmazás megjelenését, míg a viselkedését kezelt programozási nyelvek (kód mögött) segítségével implementálja. A megjelenés és a viselkedés elkülönítése a következő előnyökkel jár:
A fejlesztési és karbantartási költségek csökkennek, mert a megjelenésspecifikus korrektúra nem szorosan kapcsolódik a viselkedésspecifikus kódhoz.
A fejlesztés hatékonyabb, mert a tervezők az alkalmazás megjelenését egyidejűleg implementálhatják az alkalmazás viselkedését megvalósító fejlesztőkkel.
A globalizáció és honosítás WPF-alkalmazások számára egyszerűbbé vált.
Formázás
Az XAML egy XML-alapú korrektúranyelv, amely deklaratív módon implementálja az alkalmazás megjelenését. Általában az ablakokat, párbeszédpaneleket, lapokat és felhasználói vezérlőket definiálja, és vezérlőkkel, alakzatokkal és ábrákkal tölti ki őket.
Az alábbi példa az XAML használatával valósítja meg az egyetlen gombot tartalmazó ablak megjelenését:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="Window with button"
Width="250" Height="100">
<!-- Add button to window -->
<Button Name="button">Click Me!</Button>
</Window>
Ez az XAML egy ablakot és egy gombot határoz meg a Window
és Button
elemek használatával. Minden elem attribútumokkal van konfigurálva, például az Window
elem Title
attribútumával az ablak címsorszövegének megadásához. Futásidőben a WPF a korrektúrában definiált elemeket és attribútumokat WPF-osztályok példányaivá alakítja. A Window
elem például a Window osztály egy példányává alakul, amelynek Title tulajdonsága a Title
attribútum értéke.
Az alábbi ábrán az XAML által az előző példában definiált felhasználói felület (UI) látható:
Mivel az XAML XML-alapú, a vele megkomponált felhasználói felület beágyazott elemek hierarchiájában lesz összeállítva, amelyet elemfanéven ismerünk. Az elemfa logikus és intuitív módot kínál az UI-k létrehozására és kezelésére.
Felületi kód
Az alkalmazások fő viselkedése a felhasználói interakciókra reagáló funkciók implementálása. Például kattintson egy menüre vagy gombra, és hívja meg az üzleti logikát és az adathozzáférési logikát válaszként. A WPF-ben ez a viselkedés a korrektúrához társított kódban van implementálva. Ezt a kódtípust kód mögötti kódnak nevezzük. Az alábbi példa az előző példából származó frissített korrektúrát és a mögöttes kódot mutatja be:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.AWindow"
Title="Window with button"
Width="250" Height="100">
<!-- Add button to window -->
<Button Name="button" Click="button_Click">Click Me!</Button>
</Window>
A frissített jelölés meghatározza a xmlns:x
névteret, és társítja a sémával, amely támogatja a kódhoz tartozó típusok használatát. A x:Class
attribútum egy kód mögötti osztály társítására szolgál ehhez az adott XAML-korrektúrához. Figyelembe véve, hogy ez az attribútum a <Window>
elemen van deklarálva, a mögöttes kódosztálynak örökölnie kell a Window
osztálytól.
using System.Windows;
namespace SDKSample
{
public partial class AWindow : Window
{
public AWindow()
{
// InitializeComponent call is required to merge the UI
// that is defined in markup with this class, including
// setting properties and registering event handlers
InitializeComponent();
}
void button_Click(object sender, RoutedEventArgs e)
{
// Show message box when button is clicked.
MessageBox.Show("Hello, Windows Presentation Foundation!");
}
}
}
Namespace SDKSample
Partial Public Class AWindow
Inherits System.Windows.Window
Public Sub New()
' InitializeComponent call is required to merge the UI
' that is defined in markup with this class, including
' setting properties and registering event handlers
InitializeComponent()
End Sub
Private Sub button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
' Show message box when button is clicked.
MessageBox.Show("Hello, Windows Presentation Foundation!")
End Sub
End Class
End Namespace
InitializeComponent
a kód mögötti osztály konstruktorából hívódik meg, hogy a jelölésben definiált felhasználói felületet egyesítse a kód mögötti osztállyal. (InitializeComponent
az alkalmazás létrehozásakor jön létre, ezért nem kell manuálisan implementálnia.) A x:Class
és a InitializeComponent
kombinációja biztosítja, hogy a megvalósítás megfelelően inicializálva legyen, amikor létrejön.
Figyelje meg, hogy a korrektúra <Button>
eleme meghatározta a Click
attribútum button_Click
értékét. A jelölőnyelv és a kód-felépítés inicializálásával és közös használatával a gomb Click eseménye automatikusan a button_Click
metódushoz lesz hozzárendelve. Amikor a gombra kattint, a rendszer meghívja az eseménykezelőt, és megjelenik egy üzenetmező a System.Windows.MessageBox.Show metódus meghívásával.
Az alábbi ábrán a gomb kattintásának eredménye látható:
Bemenet és parancsok
A vezérlők leggyakrabban észlelik és válaszolnak a felhasználói bemenetekre. A WPF bemeneti rendszere a közvetlen és az irányított eseményeket is használja a szövegbevitel, a fókuszkezelés és az egér pozicionálásának támogatására.
Az alkalmazások gyakran összetett bemeneti követelményekkel rendelkeznek. A WPF egy olyan parancsrendszert biztosít, amely elválasztja a felhasználó által bevitt műveleteket a műveletekre reagáló kódtól. A parancsrendszer lehetővé teszi, hogy több forrás is meghívja ugyanazt a parancslogikát. Vegyük például a különböző alkalmazások által használt gyakori szerkesztési műveleteket: Másolás, Kivágásés Beillesztés. Ezek a műveletek különböző felhasználói műveletekkel hívhatók meg, ha parancsokkal implementálják őket.
Vezérlőberendezés
Az alkalmazásmodell által nyújtott felhasználói élmények összeállított vezérlőkben testesülnek meg. A WPF-ben a vezérlési olyan gyűjtőkifejezés, amely a WPF-osztályok olyan kategóriájára vonatkozik, amely a következő jellemzőkkel rendelkezik:
- Ablakban vagy lapon elhelyezve.
- Rendelkezik felhasználói felülettel.
- Valamilyen viselkedés implementálása.
További információ: Vezérlők.
WPF-vezérlők funkció szerint
A beépített WPF-vezérlők a következők:
gombok: Button és RepeatButton.
dátummegjelenítési és kijelölési: Calendar és DatePicker.
párbeszédpanelek: OpenFileDialog, PrintDialogés SaveFileDialog.
Digitális szabadkézi: InkCanvas és InkPresenter.
Dokumentumok: DocumentViewer, FlowDocumentPageViewer, FlowDocumentReader, FlowDocumentScrollViewerés StickyNoteControl.
bemeneti: TextBox, RichTextBoxés PasswordBox.
Elrendezési: Border, BulletDecorator, Canvas, DockPanel, Expander, Grid, GridView, GridSplitter, GroupBox, Panel, ResizeGrip, Separator, ScrollBar, ScrollViewer, StackPanel, Thumb, Viewbox, VirtualizingStackPanel, Windowés WrapPanel.
Média: Image, MediaElementés SoundPlayerAction.
Menük: ContextMenu, Menués ToolBar.
navigációs: Frame, Hyperlink, Page, NavigationWindowés TabControl.
Kijelölés: CheckBox, ComboBox, ListBox, RadioButtonés Slider.
felhasználói adatok: AccessText, Label, Popup, ProgressBar, StatusBar, TextBlockés ToolTip.
Elrendezés
Felhasználói felület létrehozásakor a vezérlőket hely és méret szerint rendezi el, hogy elrendezést alakíthasson ki. Minden elrendezés alapvető követelménye, hogy alkalmazkodjon az ablakméret és a megjelenítési beállítások változásaihoz. Ahelyett, hogy a kód írására kényszeríti, hogy ilyen körülmények között adaptáljon egy elrendezést, a WPF egy első osztályú, bővíthető elrendezési rendszert biztosít Önnek.
Az elrendezési rendszer sarokköve a relatív helymeghatározás, amely növeli a változó ablak- és megjelenítési feltételekhez való alkalmazkodás képességét. Az elrendezési rendszer a vezérlők közötti egyeztetést is kezeli az elrendezés meghatározásához. A tárgyalás kétlépéses folyamat: először egy vezérlő közli a szülővel, hogy milyen helyet és méretet igényel. Másodszor, a szülő megadja a vezérlőelemnek, hogy milyen területtel rendelkezhet.
Az elrendezési rendszer a gyermekvezérlők számára az alapszintű WPF osztályokon keresztül érhető el. Az olyan gyakori elrendezések esetében, mint a rácsok, a halmozások és a dokkolás, a WPF számos elrendezésvezérlőt tartalmaz:
Canvas: A gyermekvezérlők saját elrendezéssel rendelkeznek.
DockPanel: A gyermekvezérlők a panel széleihez vannak igazítva.
Grid: A gyermekvezérlőket sorok és oszlopok helyezik el.
StackPanel: A gyermekvezérlők függőlegesen vagy vízszintesen halmozódnak.
VirtualizingStackPanel: A gyermekvezérlők virtualizálása és elrendezése egy vízszintes vagy függőleges vonalon történik.
WrapPanel: A gyermekvezérlők balról jobbra sorrendben vannak elhelyezve, és a következő sorba vannak csomagolva, ha nincs elég hely az aktuális vonalon.
Az alábbi példa egy DockPanel-t több TextBox vezérlőelem elrendezésére használja.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.LayoutWindow"
Title="Layout with the DockPanel" Height="143" Width="319">
<!--DockPanel to layout four text boxes-->
<DockPanel>
<TextBox DockPanel.Dock="Top">Dock = "Top"</TextBox>
<TextBox DockPanel.Dock="Bottom">Dock = "Bottom"</TextBox>
<TextBox DockPanel.Dock="Left">Dock = "Left"</TextBox>
<TextBox Background="White">This TextBox "fills" the remaining space.</TextBox>
</DockPanel>
</Window>
A DockPanel lehetővé teszi, hogy a gyermek TextBox vezérlők elmondják, hogyan rendezze el őket. Ehhez a DockPanel egy Dock
csatolt tulajdonságot implementál, amely a gyermekvezérlők számára van elérhetővé téve, hogy mindegyik meg tudja adni a dokkolás stílusát.
Jegyzet
A gyermekvezérlők által használt szülővezérlő által implementált tulajdonság egy csatolt tulajdonságnevű WPF-szerkezet.
Az alábbi ábrán az előző példában szereplő XAML-korrektúra eredménye látható:
Adatkötés
A legtöbb alkalmazás úgy jön létre, hogy a felhasználók számára lehetővé teszik az adatok megtekintését és szerkesztését. A WPF-alkalmazások esetében az adatok tárolásának és elérésének munkáját már számos különböző .NET-adatelérési kódtár, például az SQL és az Entity Framework Core biztosítja. Az adatok elérése és az alkalmazás felügyelt objektumaiba való betöltése után megkezdődik a WPF-alkalmazások kemény munkája. Ez alapvetően két dologból áll:
Az adatok másolása a felügyelt objektumokból vezérlőkbe, ahol az adatok megjeleníthetők és szerkeszthetők.
Annak biztosítása, hogy az adatok vezérlőkkel végzett módosításai vissza legyenek másolva a felügyelt objektumokba.
Az alkalmazásfejlesztés egyszerűsítése érdekében a WPF hatékony adatkötési motort biztosít a lépések automatikus kezeléséhez. Az adatkötési motor alapegysége az Binding osztály, amelynek feladata egy vezérlő (a kötési cél) kötése egy adatobjektumhoz (a kötési forráshoz). Ezt a kapcsolatot az alábbi ábra szemlélteti:
A WPF támogatja a kötések deklarálását közvetlenül az XAML jelölőnyelvben. Az alábbi XAML-kód például a TextBoxText tulajdonságát egy objektum Name
tulajdonságához köti a "{Binding ... }
" XAML szintaxis használatával. Ez feltételezi, hogy a Window
számára egy olyan adatobjektum van beállítva, amelynek a DataContext tulajdonsága és a Name
tulajdonsága is meghatározott.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.DataBindingWindow">
<!-- Bind the TextBox to the data source (TextBox.Text to Person.Name) -->
<TextBox Name="personNameTextBox" Text="{Binding Path=Name}" />
</Window>
A WPF adatkötési motor nem csupán kötést biztosít, hanem érvényesítést, rendezést, szűrést és csoportosítást is biztosít. Emellett az adatkötés támogatja az adatsablonok használatát a kötött adatok egyéni felhasználói felületének létrehozásához.
További információ: Adatkötés áttekintése.
Grafika & animáció
A WPF széles körű és rugalmas grafikus funkciókat biztosít, amelyek a következő előnyökkel járnak:
Felbontásfüggetlen és eszközfüggetlen grafika. A WPF grafikus rendszer alapvető mértékegysége az eszközfüggetlen képpont, amely 1/96 hüvelyk, és biztosítja a felbontásfüggetlen és eszközfüggetlen renderelés alapjait. Minden eszközfüggetlen képpont automatikusan skálázódik, hogy megfeleljen a megjelenített rendszer pont/hüvelyk (dpi) beállításának.
Továbbfejlesztett pontosság. A WPF koordinátarendszer mérése kettős pontosságú lebegőpontos számokkal történik az egypontos pontosság helyett. Az átalakítások és az átlátszatlansági értékek is kettős pontosságúként vannak kifejezve. A WPF támogatja a széles színtartományt (scRGB), és integrált támogatást nyújt a különböző színterek bemeneteinek kezeléséhez.
Speciális grafikus és animációs támogatás. A WPF leegyszerűsíti a grafikus programozást az animációs jelenetek kezelésével; Nem kell aggódnia a jelenetfeldolgozás, a renderelési hurkok és a kétvonalas interpoláció miatt. Emellett a WPF találattesztelési támogatást és teljes alfakompozitálási támogatást is biztosít.
Hardveres gyorsítás. A WPF grafikus rendszer a grafikus hardver előnyeit kihasználva minimalizálja a processzorhasználatot.
Kétdimenziós ábrák
A WPF egy könyvtárat biztosít a közös kétdimenziós, vektorokkal rajzolt alakzatokhoz, mint például a téglalapok és az ellipszisek. Az alakzatok nem csak megjelenítésre valók; az alakzatok a vezérlőktől elvárt számos funkciót implementálnak, beleértve a billentyűzet- és egérbemenetet is.
A WPF által biztosított 2D alakzatok az alapalakzatok standard készletét fedik le. Előfordulhat azonban, hogy egyéni alakzatokat kell létrehoznia a testreszabott felhasználói felület kialakításához. A WPF geometriákat biztosít olyan egyéni alakzatok létrehozásához, amelyek közvetlenül rajzolhatók, ecsetként használhatók, vagy más alakzatok és vezérlők kivágására használhatók.
További információ: Geometria áttekintése.
A WPF 2D képességek egy részhalmaza vizuális effektusokat tartalmaz, például színátmeneteket, bitképeket, rajzokat, videókkal való festést, forgatást, skálázást és húzást. Ezek a hatások mind kefékkel érhetők el. Az alábbi ábrán néhány példa látható:
További információért lásd: WPF ecsetek áttekintése.
3D renderelés
A WPF 3D renderelési képességeket is tartalmaz, amelyek integrálhatók a 2D-s ábrákkal, így izgalmasabb és érdekesebb felhasználói felületek is létrehozhatók. Az alábbi ábrán például a 3D alakzatokra renderelt 2D képek láthatók:
További információ: 3D-s ábrák áttekintése.
Animáció
A WPF animációs támogatás lehetővé teszi, hogy a vezérlők növekedjenek, rázkódjanak, forogjanak és halványuljanak, ezáltal érdekes lapáttűnések hozhatók létre. A legtöbb WPF-osztályt animálhatja, akár egyéni osztályokat is. Az alábbi ábrán egy egyszerű animáció látható működés közben:
További információ: Animáció áttekintése.
Szöveg és tipográfia
A kiváló minőségű szövegmegjelenítés érdekében a WPF a következő funkciókat kínálja:
- OpenType betűtípus támogatása.
- ClearType-fejlesztések.
- Nagy teljesítmény, amely kihasználja a hardveres gyorsítás előnyeit.
- Szöveg integrálása adathordozóval, ábrákkal és animációval.
- Nemzetközi betűtípus-támogatási és tartalék mechanizmusok.
A képekkel való szövegintegráció szemléltetéseként az alábbi ábra a szövegdekorációk alkalmazását mutatja be:
További információért lásd: Tipográfia a Windows Presentation Foundation.
WPF-alkalmazások testreszabása
Eddig a pontig az alkalmazások fejlesztéséhez szükséges alapvető WPF-építőelemeket láthatta:
- Az alkalmazásmodell használatával tárolhatja és szolgáltathatja az alkalmazástartalmat, amely főként vezérlőkből áll.
- A kezelőfelület vezérlőinek elrendezésének egyszerűsítése érdekében a WPF-elrendezési rendszert kell használnia.
- Adatkötéssel csökkentheti a felhasználói felület adatokkal való integrálásának munkáját.
- Az alkalmazás vizuális megjelenésének javítása érdekében a WPF által biztosított átfogó grafikus, animációs és médiatámogatást használja.
Az alapok azonban gyakran nem elegendőek egy igazán különálló és vizuálisan lenyűgöző felhasználói élmény létrehozásához és kezeléséhez. Előfordulhat, hogy a szabványos WPF-vezérlők nem integrálódnak az alkalmazás kívánt megjelenésével. Előfordulhat, hogy az adatok nem a leghatékonyabb módon jelennek meg. Előfordulhat, hogy az alkalmazás általános felhasználói felülete nem felel meg a Windows-témák alapértelmezett megjelenésének és hangulatának.
Ezért a WPF különböző mechanizmusokat biztosít az egyedi felhasználói élmények létrehozásához.
Tartalommodell
A WPF-vezérlők többségének fő célja a tartalom megjelenítése. A WPF-ben a vezérlő tartalmát alkotó elemek típusát és számát a vezérlő tartalommodelljéneknevezzük. Egyes vezérlők egyetlen elemet és tartalomtípust tartalmazhatnak. Egy TextBox tartalma például egy sztringérték, amely a Text tulajdonsághoz van rendelve.
Más vezérlők azonban több különböző típusú tartalmat tartalmazhatnak; a Content tulajdonság által megadott Buttontartalma különböző elemeket tartalmazhat, például elrendezésvezérlőket, szöveget, képeket és alakzatokat.
A különböző vezérlők által támogatott tartalomtípusokról további információt WPF-tartalommodellcímű témakörben talál.
Eseményindítók
Bár az XAML-korrektúra fő célja egy alkalmazás megjelenésének megvalósítása, az XAML használatával implementálhatja az alkalmazás viselkedésének néhány aspektusát is. Ilyen például az eseményindítók használata az alkalmazások megjelenésének a felhasználói interakciók alapján történő módosításához. További információ: Stílusok és sablonok.
Sablonok
A WPF-vezérlők alapértelmezett felhasználói felületei általában más vezérlőkből és alakzatokból épülnek fel. Egy Button például ButtonChrome és ContentPresenter vezérlőkből áll. A ButtonChrome a gomb szokásos megjelenését biztosítja, míg a ContentPresenter a gomb tartalmát jeleníti meg a Content tulajdonságban megadott módon.
Előfordulhat, hogy egy vezérlő alapértelmezett megjelenése ütközik az alkalmazás általános megjelenésével. Ebben az esetben egy ControlTemplate használatával módosíthatja a vezérlő felhasználói felületének megjelenését anélkül, hogy módosítaná annak tartalmát és viselkedését.
Például, amikor rákattintanak egy Button-ra, az létrehozza a Click eseményt. Ha módosítja egy gomb sablonját egy Ellipse alakzat megjelenítésére, a vezérlő aspektusának vizualizációja megváltozott, de a funkció nem. Továbbra is rákattinthat a vezérlő vizuális aspektusára, és a Click esemény a várt módon lesz előállítva.
Adatsablonok
Míg a vezérlősablonok segítségével megadhatja a vezérlők megjelenését, az adatsablonok lehetővé teszi a vezérlő tartalmának megjelenését. Az adatsablonokat gyakran használják a kötött adatok megjelenítésének javítására. Az alábbi ábra egy ListBox alapértelmezett megjelenését mutatja, amely Task
objektumok gyűjteményéhez van kötve, ahol minden tevékenységnek van neve, leírása és prioritása:
Az alapértelmezett megjelenés olyan, amilyet egy ListBox-tól várnánk. Az egyes tevékenységek alapértelmezett megjelenése azonban csak a tevékenység nevét tartalmazza. A tevékenység nevének, leírásának és prioritásának megjelenítéséhez a ListBox vezérlőelem kötött listaelemeinek alapértelmezett megjelenését módosítani kell egy DataTemplatehasználatával. Íme egy példa a Task
objektumhoz létrehozott adatsablon alkalmazására.
használó listamező
A ListBox megtartja a viselkedését és általános megjelenését, és csak a listamező által megjelenített tartalom megjelenése módosult.
További információkért lásd: Adatsablonok áttekintése.
Stílusok
A stílusok lehetővé teszik, hogy a fejlesztők és a tervezők szabványosítsanak egy adott megjelenést a termékükhöz. A WPF erős stílusmodellt biztosít, amelynek alapja a Style elem. A stílusok tulajdonságértékeket alkalmazhatnak a típusokra. Hivatkozáskor automatikusan alkalmazhatók mindenre, a típus vagy az egyes objektumok szerint. Az alábbi példa létrehoz egy stílust, amely az ablakon minden Button háttérszínét Orange
-re állítja.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.StyleWindow"
Title="Styles">
<Window.Resources>
<!-- Style that will be applied to all buttons for this window -->
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Orange" />
<Setter Property="BorderBrush" Value="Crimson" />
<Setter Property="FontSize" Value="20" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Margin" Value="5" />
</Style>
</Window.Resources>
<StackPanel>
<!-- This button will have the style applied to it -->
<Button>Click Me!</Button>
<!-- This label will not have the style applied to it -->
<Label>Don't Click Me!</Label>
<!-- This button will have the style applied to it -->
<Button>Click Me!</Button>
</StackPanel>
</Window>
Mivel ez a stílus az összes Button vezérlőt célozza, a stílus automatikusan az ablak összes gombjára lesz alkalmazva, ahogyan az alábbi ábrán látható:
További információ: Stílusok és sablonok.
Erőforrások
Az alkalmazások vezérlőinek ugyanazzal a megjelenéssel kell rendelkezniük, amely a betűtípusoktól és a háttérszínektől kezdve a sablonokon, adatsablonokon és stílusokon át bármit tartalmazhat. A WPF felhasználói felületi erőforrásainak támogatásával ezeket az erőforrásokat egyetlen helyen ágyazhatja be újra.
Az alábbi példa egy közös háttérszínt határoz meg, amelyet egy Button és egy Labeloszt meg:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.ResourcesWindow"
Title="Resources Window">
<!-- Define window-scoped background color resource -->
<Window.Resources>
<SolidColorBrush x:Key="defaultBackground" Color="Red" />
</Window.Resources>
<!-- Button background is defined by window-scoped resource -->
<Button Background="{StaticResource defaultBackground}">One Button</Button>
<!-- Label background is defined by window-scoped resource -->
<Label Background="{StaticResource defaultBackground}">One Label</Label>
</Window>
További információ: WPF-erőforrás definiálása és hivatkozása.
Egyéni vezérlők
Bár a WPF számos testreszabási támogatást nyújt, előfordulhat, hogy a meglévő WPF-vezérlők nem felelnek meg sem az alkalmazás, sem a felhasználók igényeinek. Ez akkor fordulhat elő, ha:
- A szükséges felhasználói felület nem hozható létre a meglévő WPF-implementációk megjelenésének testreszabásával.
- A szükséges viselkedést a meglévő WPF-implementációk nem támogatják (vagy nem könnyen támogatják).
Ezen a ponton azonban kihasználhatja a három WPF-modell egyikét egy új vezérlő létrehozásához. Minden modell egy adott forgatókönyvet céloz meg, és az egyéni vezérlőnek egy adott WPF alaposztályból kell származnia. A három modell itt található:
Felhasználói vezérlőmodell
Az egyéni vezérlők UserControl származnak, és egy vagy több más vezérlőből állnak.Vezérlőmodell Az egyéni vezérlők Control származnak, és olyan implementációk készítésére szolgálnak, amelyek a legtöbb WPF-vezérlőhöz hasonlóan sablonokkal választják el a viselkedésüket a megjelenésüktől. A Control származtatása nagyobb szabadságot biztosít az egyéni felhasználói felület létrehozásához, mint a felhasználói vezérlőknél, de ez nagyobb erőfeszítést igényelhet.
Keretrendszer-elemmodell.
Az egyéni vezérlők a FrameworkElement osztályból származnak, ha a megjelenésük egyéni renderelési logikával van meghatározva (nem sablonokkal).
Az egyéni vezérlőkkel kapcsolatos további információkért lásd: Vezérlők készítése áttekintése.
Lásd még:
.NET Desktop feedback