WPF-opetusohjelma aloittelijoille
โก รlykรคs yhteenveto
WPF (Windows esittely Foundation) on Microsoftviitekehys rikkaan rakentamiseen Windows tyรถpรถytรคsovellukset. Aloittelijat oppivat, miten XAML, datan sidonta ja laitteistokiihdytetty grafiikka yhdistyvรคt luodakseen skaalautuvia, visuaalisesti rikkaita kรคyttรถliittymiรค vรคhemmรคllรค koodilla.

Mikรค on WPF?
WPF on puitteet rakentamiselle Windows sovelluksia, joiden avulla kehittรคjรคt voivat luoda rikkaita kรคyttรถliittymiรค 3D-animaatioilla ja rikkailla vรคreillรค kรคyttรคmรคllรค vรคhemmรคn koodin monimutkaisuutta. Se on vektoripohjainen renderรถintimoottori, joka hyรถdyntรครค nykyaikaisten nรคytรถnohjainten laitteistokiihdytystรค, mikรค tekee kรคyttรถliittymรคstรค nopeamman ja erittรคin skaalautuvan. WPF on lyhenne sanoista Windows esittely Foundation.
WPF:รครค voidaan pitรครค WinFormsista kehittyneenรค versiona. Se tarjoaa helppokรคyttรถisen graafisen nรคyttรถjรคrjestelmรคn Windows ja tarjoaa selkeรคn eron kรคyttรถliittymรคn ja liiketoimintalogiikan vรคlille.
WPF-sovellukset otetaan tyypillisesti kรคyttรถรถn erillisinรค tyรถpรถytรคohjelmina, ja niitรค voidaan myรถs isรคnnรถidรค upotettuina objekteina muissa sovelluksissa.
Miksi WPF?
WPF-alustan kรคytรถlle on monia syitรค. Joitakin merkittรคvimpiรค ovat:
- Ihanteellinen alusta kรคytettรคvรคksi, jos haluat kรคsitellรค erilaisia โโโโmediatyyppejรค
- WPF:n avulla voit luoda oman kรคyttรถliittymรคn. Se auttaa myรถs silloin, kun sinun on ladattava osa kรคyttรถliittymรคstรค tai haluat sitoa XML-tietoja.
- Sen avulla voit hyรถdyntรครค suurta .NET-luokkakirjastoa sellaisena kuin se on rakennettu .NET-tekniikkaa
- Resoluutioriippumattomuus, joten WPF:llรค kehitetyt sovellukset voivat toimia pienillรค tablettinรคytรถillรค tai 20-tuumaisella nรคytรถllรค
- WPF perustuu DirectX:รครคn WinAPI:n sijaan. Se kรคyttรครค asiakastietokoneen grafiikkajรคrjestelmรครค, mikรค tarjoaa paremman graafisen renderรถintitehon.
- Tukee tyรถnkulkudokumenttimallia, joka mahdollistaa "tyรถpรถytรคjulkaisun" laatuisen asettelun
- Ulkonรคkรถ ja kรคyttรคytyminen ovat lรถyhรคsti kytkรถksissรค toisiinsa. Tรคmรค mahdollistaa suunnittelijoiden ja kehittรคjien tyรถskentelyn kahden erillisen mallin parissa.
- WPF-kehyksessรค voit suunnitella tyรถkaluja graafisesti kรคyttรคmรคllรค yksinkertaisia โโXML-dokumentteja koodin jรคsentรคmisen sijaan.
- Voit kรคyttรครค laitteistokiihdytystรค graafisen kรคyttรถliittymรคn piirtรคmiseen suorituskyvyn parantamiseksi
Seuraavaksi katsotaan, miten viitekehys on kehittynyt ajan myรถtรค.
WPF:n historia
Windows 1.0 oli ensimmรคinen GUI-ympรคristรถ MicrosoftSe toimi kerroksena DOS:n pรครคllรค ja luotti GDI- ja USER-jรคrjestelmiin grafiikan ja kรคyttรถliittymรคn osalta.
DirectX esiteltiin vuonna 1995 tehokkaana nรคytรถnohjaimena, joka oli tarkoitettu peleihin ja muihin grafiikkaan liittyviin ympรคristรถihin. Vuosien varrella siitรค julkaistiin useita versioita, ja DirectX 9 tarjosi kirjaston, jota voitiin kรคyttรครค hallitun .NET-koodin kanssa.
| WPF versio | Julkaisuvuosi | .Net-versio | Visual Studio versio | Ominaisuudet |
|---|---|---|---|---|
| 3.0 | 2006 | 3.0 | N / A | Alkuperรคinen julkaisu. WPF-kehitys voidaan kuitenkin tehdรค VS 2005:llรค. |
| 3.5 | 2007 | 3.5 | US 2008 | Muutoksia ja parannuksia: Sovellusmalli, sidonta, ohjausobjektit, dokumentit, merkinnรคt ja 3D-kรคyttรถliittymรคelementit. |
| 3.5 SP1 | 2008 | 3.5 SP1 | N / A | Alkuperรคinen aloitusnรคytรถn tuki. Uusi verkkoselaimen ohjaus, DirectX pixel shader -tuki. |
| 4.0 | 2010 | 4.0 | US 2010 | Uudet ohjausobjektit: Kalenteri, DataGrid, DatePicker. Monikosketuksen ja manipuloinnin tuki. |
| 4.5 | 2012 | 4.5 | US 2012 | Nopeampi kรคynnistys, parempi suorituskyky suuria tietojoukkoja nรคytettรคessรค. Uusi valintanauhan ohjausobjekti ja INotifyDataErrorInfo-kรคyttรถliittymรค tietojen validointia varten. |
| 4.5.1 | 2013 | 4.5.1 | US 2013 | Pieniรค suorituskyvyn ja luotettavuuden parannuksia. |
| 4.5.2 | 2014 | 4.5.2 | NA | Ei suuria muutoksia |
| 4.6 | 2015 | 4.6 | US 2015 | Lรคpinรคkyvรค lastenikkunatuki HDPI- ja Touch-parannuksia |
| 4.8 | 2019 | 4.8 | US 2019 | Viimeinen merkittรคvรค .NET Framework -julkaisu, joka sisรคltรครค korjauksia korkeaan DPI-tarkkuuteen ja helppokรคyttรถisyyden parannuksia. |
| .NET Core 3.0 ja uudemmat | 2019 lรคsnรค | .NET Core 3.0:sta .NET 10:een | VS 2019/2022 | WPF:stรค tulee avoimen lรคhdekoodin ja se toimitetaan modernin .NET:n kanssa (sovellukset pysyvรคt Windows-vain). |
WPF:รครค ei enรครค versioida erillรครคn .NET:stรค. Vuodesta 2019 lรคhtien se on toimitettu modernin .NET-alustan avoimen lรคhdekoodin komponenttina, ja nykyinen versio sisรคltyy .NET 10:een, joka julkaistiin marraskuussa 2025 pitkรคaikaisen tuen (LTS) versiona.
WPF:n ominaisuudet
Alla oleva kaavio ryhmittelee WPF:n tรคrkeimmรคt ominaisuudet, jotka on lueteltu yksityiskohtaisesti sen jรคlkeen.

- Asiakirjat ja tulostus
- Turvallisuus, saavutettavuus ja lokalisointi
- Tarjoaa yhteentoimivuuden kanssa Windows Lomakkeiden sรครคtimet
- Direct3D:tรค kรคytetรครคn graafisissa sovelluksissa, joissa suorituskyky on tรคrkeรครค
- Kรคyttรครค nรคytรถnohjaimen laitteistoa renderรถimiseen
- Vektoripohjaisten grafiikoiden avulla voit skaalata sovellustasi laadun heikkenemรคttรค
- WPF tukee liukulukujen loogista pikselijรคrjestelmรครค ja 32-bittistรค ARGB-vรคriรค
- Mรครคritรค tyylit ja ohjausmallit uudelleen
- Kansainvรคlisten fonttien rakentaminen yhdistelmรคfonteista
- WPF-tekstin renderรถinti hyรถdyntรครค ClearType-tekniikkaa
- Mahdollistaa videomuistissa olevan esirenderoidun tekstin vรคlimuistitekniikan kรคytรถn
- Resurssipohjainen lรคhestymistapa jokaiseen hallintaan
- WPF alustaa ja hallitsee esitysajastimet
- Myรถs videon ja animaation suhdetta tuetaan
- WPF:ssรค tyyli on joukko ominaisuuksia, joita tulisi soveltaa visuaaliseen renderรถintiin kรคytettรคvรครคn sisรคltรถรถn.
- WPF-mallit auttavat sinua muuttamaan dokumenttisi kรคyttรถliittymรครค
- Komennot ovat vatsalihaksiatract ja tapahtumien lรถyhรคsti kytkรถksissรค oleva versio
- WPF-tuki komentoille vรคhentรครค kirjoitettavan koodin mรครคrรครค
Seuraavaksi tรคssรค WPF:ssรค C# opetusohjelma, opimme WPF-ydintyypeistรค ja infrastruktuurista.
WPF-ydintyypit ja -infrastruktuurit
WPF-luokat on jaettu neljรครคn eri tyyppiin:
- UIElement
- FrameworkElement
- Sisรคltรถelementti
- FrameworkContentElement
Nรคitรค luokkia kutsutaan peruselementtiluokiksi. Ne tarjoavat pohjan kรคyttรถliittymien luomismallille.
WPF-kรคyttรถliittymรคt koostuvat elementeistรค, jotka on koottu puurakenteeksi, jota kutsutaan elementtipuuksi. Elementtipuu on intuitiivinen tapa suunnitella kรคyttรถliittymiรค, ja se on rakenne, jonka kautta saat tehokkaita kรคyttรถliittymรคpalveluita.
XAML
Extensible Application Markup Language eli XAML (lausutaan โzammelโ) on deklaratiivinen tapa mรครคritellรค kรคyttรถliittymiรค.
Tรคssรค on yksinkertaisen painikkeen XAML-mรครคritelmรค:
<Button FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center" > Say Hello Guru99</Button>
XAML-kielen kรคytรถn edut:
- XAML erottaa kรคyttรถliittymรคn ulkoasun taustalogiikasta
- XAML on helpoin tapa edustaa kรคyttรถliittymiรค
- XAML toimii tehokkaasti suunnittelutyรถkalujen kanssa
Hallintalaitteet
WPF-kehys tukee monia hyรถdyllisiรค kontrolleja, kuten:
- Muokkaussรครคtimet, kuten tekstiBox, TarkistaaBox, Radiopainike
- Luettelon sรครคtimet, kuten ListBox, ListView, TreeView
- Kรคyttรคjรคtiedot, kuten Label, WPF ProgressBar, ToolTip
- Toiminnot, kuten valikko, painike ja tyรถkalupalkki
- Ulkoasut, kuten Border, WPF Image ja Viewbox
- Yleisiรค valintaikkunoita, kuten OpenFileDialog ja PrintDialog
- Sรคiliรถt, kuten TabControl, ScrollBar ja GroupBox
- Asettelut, kuten DockPanel, StackPanel ja Grid
- Navigointi, kuten kehys ja hyperlinkki
Ohjainten ulkonรคkรถรค voidaan mukauttaa tyyleillรค ja malleilla ilman ohjelmointia. Voit myรถs luoda mukautetun ohjausobjektin johtamalla uuden luokan sopivasta perusluokasta.
Esiintyminen
WPF tarjoaa ominaisuuden sovelluksesi ulkoasun mukauttamiseen. Sen avulla voit asettaa objekteja ja arvoja esimerkiksi fonteille, taustoille jne.
Tyylit-ominaisuuden avulla voit standardoida koko tuotteen tietyn ulkoasun. Sen avulla voit korvata oletusulkoasun sรคilyttรคen sen oletuskรคyttรคytymisen.
Tietomallin avulla voit hallita sidotun datan oletusvisualisointia. Teemojen avulla voit helposti ottaa kรคyttรถรถn kรคyttรถjรคrjestelmรคn visuaalisia tyylejรค.
Asettelu ja paneelit
Asettelu auttaa sinua sijoittamaan ja mitoittamaan ohjausobjekteja oikein. Se on osa esityksen laatimista kรคyttรคjรคlle. WPF-kehys helpottaa asetteluprosessia ja tarjoaa kรคyttรถliittymรคn ulkoasun paremman mukautuvuuden.
Asetteluinfrastruktuuria tarjoaa viisi pรครคluokkaa: 1) StackPanel, 2) DockPanel, 3) WrapPanel, 4) Grid ja 5) Canvas
grafiikka
WPF tarjoaa parannetun grafiikkajรคrjestelmรคn:
- WPF kรคyttรครค laitteesta riippumattomia yksikรถitรค, mikรค mahdollistaa resoluution ja laitteen riippumattomuuden. Jokainen laitteesta riippumaton pikseli skaalautuu automaattisesti jรคrjestelmรคn pistemรครคrรคn tuumalla -asetuksen mukaan.
- WPF kรคyttรครค tuplaa floatin sijaan ja tukee laajempaa vรคrivalikoimaa
- WPF-grafiikkamoottori on suunniteltu siten, ettรค se voi hyรถdyntรครค grafiikkalaitteistoa, kun se on saatavilla
Asiakirjat ja tulostus
WPF-kehys tarjoaa kolmenlaisia โโdokumentteja:
- Kiinteรคt asiakirjat: Tรคmรคntyyppinen asiakirja tukee WY:tรคSIWYG esitys.
- Flow-asiakirjat: Voit sรครคtรครค ja muokata sisรคltรถรค ajonaikaisten muuttujien, kuten ikkunan koon ja laitteen resoluution, perusteella.
- XPS-asiakirjat: Sivutettu esitys sรคhkรถisestรค paperista XML-pohjaisessa muodossa. XPS on avoin, standardoitu asiakirjamuoto.
WPF mahdollistaa paremman tulostusjรคrjestelmรคn hallinnan, mukaan lukien etรคtulostuksen ja jonojen. Lisรคksi XPS-dokumentteja voidaan tulostaa suoraan ilman niiden muuntamista tulostusmuotoon.
Kun rakennuspalikat on kรคsitelty, katsotaanpa, miten nรคmรค osat sopivat yhteen sisรคisesti.
WPF Archirakenne
WPF on osa .NET-kehystรค. Se sisรคltรครค sekรค hallittua ettรค hallitsematonta koodia. WPF-arkkitehtuurin tรคrkeรคt osat on selitetty alla olevassa kuvassa:
WPF-arkkitehtuurin komponentit
- EsitysKehysAuttaa luomaan pรครคtason elementtejรค, kuten ohjaimia, tyylejรค, asetteluja, ikkunoita jne.
- PresentationCoreSe sisรคltรครค perustyyppejรค, kuten UIElement ja Visual, joista kaikki PresentationFramework.dll-tiedoston ohjausobjektit ja muodot on johdettu.
- CLR: Se tekee kehitysprosessista tuottavan tarjoamalla ominaisuuksia, kuten Muistinhallinta, virheenkรคsittely jne.
- Milcore: Milcore on osa hallitsematonta koodia, joka tarjoaa tiiviin integraation DirectX:n kanssa.
- DirectX: Se on matalan tason API, joka renderรถi WPF:n grafiikan. DirectX on vuorovaikutuksessa ajurien kanssa ja renderรถi sisรคllรถn.
- Kรคyttรคjรค32: Se on ydin-API, jota monet ohjelmat kรคyttรคvรคt laajalti. Se hallitsee muistia ja prosessien erottelua. User32 auttaa sinua pรครคttรคmรครคn, mikรค elementti sijoitetaan mihin nรคytรถllรค.
- Kernel: Syรถte on perรคisin signaalina ydintilan laiteajurista ja reititetรครคn oikeaan prosessiin muodostamalla yhteys Windows ydin ja User32.
WPF-tietojen sidonta
Tietojen sidonta on yksi WPF:n tehokkaimmista kรคsitteistรค. Sen sijaan, ettรค kirjoitettaisiin koodia, joka kopioi arvoja manuaalisesti ohjausobjektien ja objektien vรคlillรค, XAML:ssรค mรครคritellรครคn yhteys, ja WPF pitรครค molemmat osapuolet synkronoituna automaattisesti. Esimerkiksi:
<TextBox Text="{Binding Path=StudentName, Mode=TwoWay}" />
WPF tukee neljรครค sidontatilaa:
- Yksisuuntainen: Ohjausobjekti pรคivittyy, kun lรคhdetiedot muuttuvat
- Kaksisuuntainen: Muutokset virtaavat molempiin suuntiin ohjauksen ja lรคhteen vรคlillรค
- Kerran: Ohjaus lukee lรคhdearvon vain kerran latausaikana
- OneWayToSource: Ohjaus lรคhettรครค arvonsa lรคhteelle, ei koskaan pรคinvastoin
Datasidonta on myรถs MVVM (Model-View-ViewModel) -mallin moottori. MVVM on yleisin arkkitehtuuri ammattimaisissa WPF-sovelluksissa, koska se antaa nรคkymรคn pysyรค XAML:ssรค, kun taas logiikka sijaitsee testattavissa C#-luokissa.
๐ก Vinkki: Toteuta INotifyPropertyChanged-rajapinta tietoluokissasi. Ilman sitรค kรคyttรถliittymรค ei pรคivity, kun ominaisuuksien arvot muuttuvat koodissa.
WPF asennus
WPF:n asennusohjeet lรถytyvรคt tรคstรค linkistรค: https://www.guru99.com/download-install-visual-studio.html
Seuraavaksi tรคssรค WPF-sovellusoppaassa rakennamme ensimmรคisen WPF-sovelluksemme.
Kuinka luoda ensimmรคinen WPF-sovellus?
Tรคssรค WPF-esimerkissรค kehitรคmme WPF-perussovelluksen. Aloitetaan siis yksinkertainen toteutus noudattamalla alla olevan WPF-sovellusesimerkin ohjeita.
Vaihe 1) Valitse Visual Studiossa Tiedosto > Uusi > Projekti.
Vaihe 2) Uudessa projektiikkunassa
- Valitse WPF-sovellus
- Kirjoita nimi muodossa "MyWPF"
- OK
Vaihe 3) Visual Studio luo kaksi tiedostoa oletuksena
- XAML-tiedosto (MainWindow.xaml)
- CS-tiedosto (MainWindow.xaml.cs)
MainWindow.xaml on
- Suunnitteluikkuna
- XAML tiedosto
XAML-ikkunassa kirjoitetaan oletusarvoisesti seuraavat tagit:
Ruudukko on oletuksena ensimmรคinen elementti.
MainWindow.xaml.cs sisรคltรครค XAML-suunnittelutiedostoa vastaavan koodin:
Vaihe 4) Tyรถkalupakissa
- Vedรค tekstiรคBox elementti suunnitteluikkunaan
- TekstiBox tulee nรคkyviin suunnitteluikkunaan
- Nรคet tekstille XAML-koodin.Box lisรค-
Vaihe 5) Muuta tekstiksi โEnsimmรคinen WPF-ohjelmaโ.
Vaihe 6) Napsauta Kรคynnistรค-painiketta
Vaihe 7) Nรคet ikkunan tulosteessa
Onnittelut! Olet suunnitellut ja luonut ensimmรคisen WPF-sovelluksesi. Seuraavaksi tรคssรค WPF aloittelijoille -opetusohjelmassa nรคemme eron WPF:n ja WinFormsin vรคlillรค.
WPF vs. WinForms
| WPF | WinForms |
|---|---|
| Se on uudempi kehys, joten se on paremmin nykyisten standardien mukainen. | Se on vanhempi, joten se on enemmรคn testattu ja testattu. |
| Se on joustava ja ominaisuuksiltaan runsas. Voit suunnitella erittรคin monipuolisia sovelluksia ilman koodausta tai ohjausobjektien ostamista. | Ei niin ominaisuuksiltaan rikas |
| 3:n kehittรคjรคtrd Osapuolikontrollit keskittyvรคt yhteensopivuuteen WPF:n kanssa, koska se on tulevaisuutta. | Voit ostaa tai saada ilmaiseksi monia kolmannen osapuolen ohjaimia. |
| XAML:n avulla voit luoda ja muokata graafista kรคyttรถliittymรครคsi helposti. Se mahdollistaa tyรถn jakamisen suunnittelijan (XAML) ja ohjelmoijan (C#, VB.NET jne.) kesken. | In Windows Lomakkeet, kaikki koodi on kirjoitettu yhteen paikkaan. |
| XAML-taidot siirtyvรคt suoraan uudempiin frameworkeihin, kuten WinUI 3:een, .NET MAUI:hin ja Avalonia UI:hin. | WinForms-taidot soveltuvat pรครคasiassa klassisiin Windows tyรถpรถytรคkehitys. |
| WPF:n sisรคinen ohjauspaketti on rajoitettu | Sisรครคnrakennetut ohjaimet ovat erittรคin tehokkaita |
WPF:llรค rakennettujen sovellusten tyyppi
- WPF:รครค kรคytetรครคn itsenรคisenรค Windows tyรถpรถytรคsovellukset, kuten yritystason tyรถkalut, kojelaudat, kaupankรคyntipรครคtteet ja suunnitteluohjelmistot
- Windows Lomakkeet ja WPF-sivut voivat olla rinnakkain samassa sovelluksessa
- Voit kehittรครค sivu-/ikkunanavigointityylisiรค sovelluksia
WPF modernissa .NETissรค
Microsoft avoimen lรคhdekoodin WPF joulukuussa 2018, ja .NET Core 3.0:sta (2019) lรคhtien viitekehys on toimitettu jokaisen modernin .NET-julkaisun mukana .NET 10:een asti. Sovelluksen siirtรคminen moderniin .NET:iin nopeuttaa kรคynnistystรค, yksinkertaistaa kรคyttรถรถnottoa itsenรคisen julkaisun ansiosta ja nopeuttaa pรครคsyรค nykyisiin C#-kielen ominaisuuksiin, kun taas WPF-ohjelmointimalli pysyy samana.
WPF pysyy Windows-vain. Jos valitset tyรถpรถytรคsovelluskehystรค tรคnรครคn, tรคmรค vertailu auttaa:
| Puitteet | Best For |
|---|---|
| WPF | Kypsรค, ominaisuuksiltaan runsas Windows tyรถpรถytรคsovellukset, joilla on valtava ekosysteemi |
| WindowsUI 3 | Uudet sovellukset, jotka on suunnattu nykyaikaiselle Windows 11 ulkonรคkรถ ja tuntuma |
| .NET MAUI | Eri alustojen sovellukset kattavat Windows, macOS, Androidja iOS |
Koska WPF:รครค yllรคpidetรครคn aktiivisesti ja se on syvรคsti integroitu yritysohjelmistoihin, sen oppiminen on kรคytรคnnรถllinen investointi. Kun olet tottunut nรคiden sovellusten rakentamiseen, kannattaa harjoitella yleisimpiรค WPF-haastattelukysymykset lukitakseen kรคsitteitรค, kuten XAML, datan sidonta ja visuaalinen puu.









