Ano ang WPF (Windows Presentation Foundation): Isang Kumpletong Gabay sa Arkitektura, XAML, Mga Kontrol, Layout, Data, Graphics, at Pag-customize

Huling pag-update: 14/08/2025
May-akda: Isaac
  • Ang WPF ay ang .NET UI framework para sa Windows: Vector, GPU-accelerated, at XAML-based.
  • Dalawang pagpapatupad: .NET (open source) at .NET Framework 4; pareho ay Windows-only.
  • nagbubuklod, comandos, mga istilo at template ay nagbibigay-daan sa mayaman, mapanatili, MVVM-oriented na mga UI.
  • 2D/3D graphics, animation, typography, multimedia, at interoperability ng Win32/WinForms.

WPF Windows Presentation Foundation

Ang Windows Presentation Foundation (WPF) ay ang .NET user interface framework para sa pagbuo ng moderno, scalable, graphics-accelerated na Windows desktop application. hardware. Ipinanganak upang samantalahin ang Direct3D at ang mga GPU ngayon, na nag-aalok ng isang vector-based na rendering engine, tumutugon na layout, mga animation, at isang malinaw na paghihiwalay sa pagitan ng interface at logic salamat sa XAML at code sa likod.

Bilang karagdagan sa visual power nito, isinasama ng WPF ang isang napakahusay na modelo ng data, mga estilo at template, mga command, advanced na suporta sa teksto, at pagiging tugma sa multimedia, 2D/3D, at kalidad ng palalimbagan. Ang lahat ng ito ay sinamahan ng mga mature na tool sa Visual Studio at Blend, isang ecosystem ng mga kontrol ng third-party, at ang kakayahang makipag-interoperate sa mga kasalukuyang teknolohiya tulad ng Windows Forms o Win32.

Ano ang WPF at ang mga pagpapatupad nito

Ang WPF ay isang resolution-independent presentation framework na kumukuha ng interface nito gamit ang vector graphics pipeline. at isang mahalagang bahagi ng .NET. Itong device-independent na diskarte ay nagbibigay-daan sa malinis at nasusukat na mga interface sa iba't ibang paraan DPI, pinapadali ang accessibility at visual na kalidad sa anumang monitor.

Mayroong dalawang pangunahing pagpapatupad: ang .NET na bersyon (bukas at naka-host sa GitHub) at ang .NET Framework 4 na bersyon na kasama ng Windows. Ang .NET na edisyon ay eksklusibong tumatakbo sa Windows, bagama't ang .NET ay cross-platform, at ang XAML designer nito ay nangangailangan ng hindi bababa sa Visual Studio 2019 16.8 (o mga mas bagong bersyon depende sa .NET na bersyon). Ang .NET Framework 4-based na edisyon ay sinusuportahan ng Visual Studio 2017 at 2019 at ipinamamahagi bilang bahagi ng mismong operating system.

Ang paglipat ng mga application mula sa .NET Framework patungo sa .NET ay may malinaw na mga benepisyo: Pinahusay na pagganap, mga bagong API, pinakabagong mga pagpapahusay sa wika, higit na accessibility at pagiging maaasahan, at na-update na tooling. Kung nagpapanatili ka ng naka-install na base batay sa .NET Framework, ang pagtalon ay magbabayad sa pagiging produktibo at pagpapanatili sa katamtamang termino, lalo na sa mga sitwasyong LOB (linya ng negosyo).

Sa kasaysayan, isinama na ang WPF mula pa noong Windows Vista at available din para sa Windows XP SP2 at Windows Server 2003, na nagpapatibay sa sarili nito bilang reference desktop UI layer sa .NET ecosystem. Sa antas ng pamilya ng teknolohiya, ang Silverlight ay isang subset ng WPF na naglalayon sa mga rich web at mobile application, na minana ang modelong XAML, bagama't walang suporta sa 3D at may pinababang saklaw kumpara sa WPF.

Ang pag-render ng WPF ay batay sa Direct3D, na nagbibigay-daan sa mga kumplikadong graphics, pare-parehong mga tema, at pag-load ng trabaho sa GPU upang bawasan ang pag-load ng CPU. Pinipigilan ng pagbibigay-diin sa mga vector ang pixelation kapag nag-scale at pinapadali ang mga tuluy-tuloy na karanasan sa tuwing pinapayagan ng hardware.

igpu gpu
Kaugnay na artikulo:
Paano tingnan kung gumagamit ka ng nakalaang graphics card sa Windows 11

Ilustrasyon ng interface ng WPF

XAML, code-behind, at modelo ng programming

Sa WPF, ang interface ay ipinahayag gamit ang XAML (isang XML-based na markup language) at ang gawi ay ipinatupad gamit ang pinamamahalaang code (C# o VB.NET) sa code-behind classes. Ang paghihiwalay ng mga responsibilidad na ito ay binabawasan ang mga gastos sa pagpapaunlad at pagpapanatili at nagbibigay-daan sa mga designer at developer na magtrabaho nang magkatulad nang hindi nagsasapawan.

  Paano maaayos ng isa ang Laggy o Sluggish Mouse sa Mac

Ang modelo ng programming Ito ay umaasa sa System.Windows namespace at umaasa sa mga pamilyar na konsepto (class instantiation, mga katangian, pamamaraan, at mga kaganapan) at sa dalawang pillars ng sarili nitong: dependency properties at routed event. Ang mga pag-aari ng dependency ay nagbibigay-daan sa pagbubuklod ng data, mga istilo, animation, at pamana ng halaga; Maaaring maglakbay ang mga naka-ruta na kaganapan sa visual tree, na nagpapasimple sa pamamahala ng mga kumplikadong pakikipag-ugnayan.

Ang element tree na nabuo ng XAML ay tumutukoy sa isang malinaw na hierarchy ng mga bahagi, at sa runtime ang framework ay nagko-convert ng mga elemento at attribute sa aktwal na WPF class instance. Hal Ang isang elemento ng Window na may katangiang Pamagat ay ginawa bilang isang halimbawa ng klase ng Window kasama ang set ng property ng Pamagat nito.

error sa user interface
Kaugnay na artikulo:
Ayusin ang UI Error sa COD Cold War

Ang link sa pagitan ng XAML at code-behind ay idineklara gamit ang x:Class, at ang compile-time na InitializeComponent na paraan ay nagbubuklod sa UI sa klase at nagrerehistro ng mga tagapangasiwa ng kaganapan. Kapag ang isang control ay nagdeklara ng isang controller sa XAML, ang system ay nagkokonekta sa kaganapan (tulad ng Click on a Button) sa kaukulang pamamaraan sa partial class.

Sinusuportahan din ng WPF ang mga pattern ng arkitektura tulad ng MVVM salamat sa data binding system nito, mga command at DataContext. Hinihikayat nito ang pagsubok ng unit, muling paggamit ng view, at mahigpit na paghihiwalay sa pagitan ng logic ng view at presentation.

XAML at WPF code-sa likod

Input, mga utos, mga kontrol at layout

Pinagsasama ng WPF input system ang mga direktang at naka-ruta na kaganapan para sa text, focus, at pointer. at nagdadagdag isang command system na naghihiwalay sa pagkilos mula sa kilos ng user. Kaya, Ang parehong command (Kopyahin, Gupitin, I-paste) ay maaaring gamitin mula sa mga shortcut sa keyboard, mga menu o mga pindutan nang walang pagdodoble ng lohika.

Sa WPF, ang kontrol ay anumang elemento ng UI, na naka-host sa isang window o page, na may tinukoy na gawi; kasama sa framework ang malawak na hanay ng mga kontrol na handa nang gamitin. Pinapabilis nito ang paglikha ng mga rich application nang hindi kinakailangang bumuo ng mga bahagi mula sa simula.

Ayon sa pag-andar, ang mga built-in na kontrol ay sumasaklaw sa mga kategorya tulad ng mga pindutan, pagpapakita ng data, nabigasyon, mga menu, pagpili, input, at higit pa. Nasa ibaba ang mga halimbawa ng mga klase sa bawat pangkat:

  • Mga Pindutan: Button, Repeat Button.
  • Pagpapakita ng data: DataGrid, ListView, TreeView.
  • Mga petsa: Kalendaryo, DatePicker.
  • Mga dialog box: OpenFileDialog, SaveFileDialog, PrintDialog.
  • Digital na tinta: InkCanvas, InkPresenter.
  • Mga Dokumento: DocumentViewer, FlowDocumentReader, FlowDocumentScrollViewer, FlowDocumentPageViewer, StickyNoteControl.
  • Pag-input ng teksto: TextBox, RichTextBox, PasswordBox.
  • Disenyo: Border, Canvas, DockPanel, Grid, GridSplitter, GridView, Panel, StackPanel, WrapPanel, ScrollViewer, ScrollBar, Viewbox, VirtualizingStackPanel, Window, Thumb, GroupBox, Expander, Separator, ResizeGrip, BulletDecorator.
  • Media: Larawan, MediaElement, SoundPlayerAction.
  • Mga menu at bar: Menu, ContextMenu, ToolBar, StatusBar, ProgressBar.
  • Pag-navigate: Frame, Page, NavigationWindow, Hyperlink, TabControl.
  • Pinili: CheckBox, RadioButton, ComboBox, ListBox, Slider.
  • Impormasyon ng gumagamit: Label, TextBlock, ToolTip, Popup, AccessText.
  Paano sukatin ang latency sa mga video game at babaan ito nang walang problema

Ang sistema ng disenyo (layout) ay pangunahing: namamahagi ng mga kontrol ayon sa laki at posisyon sa isang relatibong paraan, nakikipag-ayos ng espasyo sa pagitan ng mga magulang at mga anak upang umangkop sa mga pagbabago sa window at mga screen. Iniiwasan nito ang logic na partikular sa resolusyon at nagbibigay-daan para sa adaptive na UI.

Sinasaklaw ng mga panel ng disenyo ang pinakakaraniwang mga pattern: Canvas (absolute position), DockPanel (edge snapping), Grid (rows and columns), StackPanel (horizontal or vertical stacking), VirtualizingStackPanel (virtualized stacking), at WrapPanel (line break). Halimbawa, pinapayagan ka ng DockPanel na i-dock ang mga kontrol sa mga gilid at ang iba ay madaling sakupin ang libreng espasyo.

Mga kontrol at layout sa WPF

Pag-uugnay ng data, mga template at mapagkukunan

Pinapasimple ng data binding ang pag-synchronize sa pagitan ng mga object at UI, na inaalis ang pangangailangang manu-manong kopyahin ang mga value at ginagawang mas madali ang pagpapalaganap ng mga pagbabago. Ang Binding class ay nagkokonekta sa pinagmulan at patutunguhan, habang ang DataContext ay nagbibigay-daan sa mga kontrol na maghanap ng mga property nang walang tahasang mga wiring.

Mula sa XAML, idineklara ang mga binding gamit ang mga expression, at nag-aalok ang WPF ng pagpapatunay, pag-uuri, pag-filter, at pagpapangkat sa mga koleksyon; sinusuportahan din nito ang mga template ng data upang tukuyin ang display para sa bawat item. Salamat sa arkitektura na ito, ang mga kumplikadong listahan ay maaaring ipakita gamit ang mga custom na layout nang hindi nakakaapekto sa pagganap.

Sinusuportahan ng WPF ang iba't ibang mga binding mode: isang solong, unidirectional (read) at bidirectional (read and write). Sa mga application ng negosyo, ang pagsasama-sama ng mga mode na ito sa mga listahan at mga form ay karaniwan upang mapadali ang pag-edit at pagtingin.

Bilang karagdagan sa .NET na mga bagay at koleksyon, ang mga query sa LINQ (kabilang ang LINQ hanggang XML) ay madaling magamit bilang mga mapagkukunan ng data. Ang makina ay hindi nagpapataw ng pagtatanghal: ito ay tinutukoy ng mga template ng data, na maaaring i-customize para sa bawat uri ng naka-link na bagay.

Pinapayagan ka ng mga istilo na i-standardize ang hitsura: Ang Estilo ay nagtatalaga ng mga pag-aari sa isang partikular na uri o halimbawa, na nagsasentro ng mga kulay, font at margin para sa buong aplikasyon. Pinapadali ng Resources system na ibahagi ang mga istilo at brush na ito sa pagitan ng mga kontrol at bintana.

Tinutukoy ng modelo ng nilalaman kung ano ang maaaring i-host ng isang kontrol sa Nilalaman: mga simpleng kontrol tulad ng TextBox o mga kumplikadong naglalaman ng mga puno ng mga elemento, tulad ng Button na may mga panloob na layout o larawan. Pinapadali ng flexibility na ito ang pagbuo ng mga kumplikadong interface nang hindi gumagawa ng mga bagong kontrol mula sa simula.

Salamat sa mga template, ang visual na hitsura ng mga kontrol ay maaaring baguhin nang hindi binabago ang kanilang pag-uugali: Pinapayagan ka ng ControlTemplate na baguhin ang hitsura ng isang kontrol, at tinutukoy ng DataTemplate kung paano ipinapakita ang data sa mga listahan at grid.

Data binding at mga template ng WPF

Mga graphic, animation, teksto at advanced na pag-customize

  • Nag-aalok ang WPF graphics system ng pagiging independent ng device, katumpakan ng coordinate, at suporta para sa malalawak na espasyo ng kulay. Nagreresulta ito sa mga malulutong na interface, tumpak na pagbabago, at de-kalidad na pagpaparami ng kulay.
  • Sa 2D, kabilang dito ang mga ready-made na hugis ng vector, geometries para sa paggawa ng mga custom na figure, at malawak na palette ng mga brush para sa mga gradient, larawan, drawing, at texture, pati na rin ang pagsuporta sa mga pagbabago tulad ng pag-ikot, pag-scale, o skewing. Ang mga hugis na ito ay lumahok sa input, tumatanggap ng focus at isinama sa visual na modelo.
  • Sa 3D, maaari mong isama ang mga eksena sa mga meshes, materyales, at camera; maaari mo ring i-project ang 2D na content sa mga 3D surface para sa mga nakaka-engganyong karanasan at interactive na kontrol sa kalawakan. Bagama't limitado kumpara sa buong Direct3D, ang 3D na suporta sa WPF ay mahusay na pinagsama sa UI, mga dokumento, at multimedia.
  • Ang animation engine ay temporal at na-decoupled mula sa mga frame, na nagbibigay-daan sa iyong i-animate ang anumang dependency na property na may mga klase tulad ng DoubleAnimation o ColorAnimation, na pinamamahalaan gamit ang Storyboards. Maaari itong ma-trigger ng mga kaganapan o pag-trigger sa XAML, na nagpapadali sa mga kumplikadong animation na may maliit na code.
  • Ang WPF ay katutubong sumusuporta sa imahe at video: mga format tulad ng BMP, JPEG, PNG, TIFF, GIF, mga icon at Windows Media Photo, pati na rin ang WMV, MPEG at AVI, gamit ang mga codec na naka-install sa system.
  • Sa mga tuntunin ng typography at teksto, nagtatampok ito ng suporta sa OpenType at mga pagpapahusay ng ClearType, na may pinabilis na hardware na pag-render, na isinama sa mga graphics at animation para sa isang de-kalidad na karanasan sa pagbabasa.
  • Ang mga visual effect ay na-moderno: Hindi na ginagamit ang BitmapEffects, at dahil .NET 3.5 SP1, pinapayagan ng Effect ang mga filter na pinabilis ng GPU gaya ng BlurEffect at DropShadowEffect, pati na rin ang mga custom na effect gamit ang mga shader.
  • Ang retained mode ay nagbibigay-daan sa mga kontrol na hatiin sa mga visual tree at mahusay na pamahalaan ang mga update, na sinasamantala ang GPU acceleration. Sa limitadong hardware, ang ilang mga pakinabang ay nababawasan, ngunit ang platform ay gumaganap pa rin nang maayos.
  • Ang interoperating sa pagitan ng WPF at iba pang mga teknolohiya ay simple: maaaring mag-host ng mga kontrol ng WPF sa mga application ng Win32 at kabaliktaran, na nagpapadali sa mga unti-unting paglilipat at muling paggamit ng bahagi.
  • Kasama sa mga diskarte para sa mga custom na kontrol ang UserControl, Control, at FrameworkElement, depende sa antas ng pagpapasadya at paghihiwalay ng gawi at hitsura. Binibigyang-daan ka ng mga trigger na baguhin ang mga istilo at template bilang tugon sa mga kaganapan nang hindi binabago ang pinagbabatayan na gawi, na nagpapayaman sa iyong visual na disenyo.
  • Ang mga tool sa pag-unlad ay napabuti: Nag-aalok ang Visual Studio ng XAML designer, debugging, performance profiling, na may suporta at preview ng IntelliSense na nagpapabilis sa paglikha at pag-tune ng mga kumplikadong UI.
  • Kasama sa external ecosystem ang mga advanced na kontrol mula sa mga vendor gaya ng Infragistics, Telerik, at DevExpress, pati na rin ang mga open source na mapagkukunan at proyekto tulad ng Avalonia UI na nagbibigay inspirasyon sa mga cross-platform na pattern.
  • Para sa mga application sa Windows, Pinagsasama ng WPF ang pagganap, modernong disenyo, at flexible na arkitektura, na ginagawa itong isang solidong pagpipilian kumpara sa mga alternatibo tulad ng Windows Forms, web application, o Java Swing.
  Paano Makakahanap ng Royalty-Free Music: Isang Kumpleto at Praktikal na Gabay

Sa lahat ng nasa itaas, pinatatag ang WPF bilang isang malakas na platform para sa pagbuo ng mga desktop application na may lubos na nako-customize na mga UI, matatag na modelo ng data, advanced na graphics, at suporta sa multimedia. Gamit ang mga resource gaya ng XAML, data bindings, styles, at templates, makakagawa ka ng pare-pareho, naa-access, at maintainable na mga karanasan na gumagamit ng hardware acceleration at interoperability sa mga kasalukuyang teknolohiya.