Windows Presentation Foundation ( WPF ) er en analog af WinForms, et system til opbygning af Windows -klientapplikationer med visuelt attraktive brugerinteraktionsmuligheder, et grafisk (præsentations) undersystem som en del af .NET Framework (startende med version 3.0 ), ved hjælp af XAML -sproget [1] .
WPF er forudinstalleret på Windows Vista ( .NET Framework 3.0), Windows 7 ( .NET Framework 3.5 SP1), Windows 8 (.NET Framework 4.0 og 4.5), Windows 8.1 (.NET Framework 4.5.1) og Windows 10 (.NET Ramme 4.7). Med WPF kan du oprette en bred vifte af både selvstændige og browserbaserede applikationer [2] .
I hjertet af WPF er et vektorgengivelsessystem, der ikke afhænger af outputenhedens opløsning og blev skabt under hensyntagen til mulighederne i moderne grafikhardware. WPF leverer værktøjer til at skabe en visuel grænseflade, herunder XAML (eXtensible Application Markup Language), kontroller, databinding, layout, 2D- og 3D-grafik, animation, stilarter, skabeloner, dokumenter, tekst, multimedier og dekoration [2] .
Grafikteknologien bag WPF er DirectX , i modsætning til Windows Forms , som bruger GDI / GDI+ [3] . Ydeevnen af WPF er højere end GDI+ på grund af brugen af grafikhardwareacceleration gennem DirectX .
Der er også en afisoleret version af CLR kaldet WPF/E , også kendt som Silverlight .
XAML er et deklarativt grænsefladebeskrivelsessprog baseret på XML . En model til adskillelse af kode og design er også blevet implementeret, hvilket giver programmør og designer mulighed for at samarbejde. Derudover er der indbygget understøttelse af elementstile, og selve elementerne er let opdelt i kontrolelementer på andet niveau , som igen er opdelt ned til niveauet af vektorformer og egenskaber/handlinger. Dette gør det nemt at style ethvert element, såsom en knap .
Ethvert .NET -kompatibelt sprog er påkrævet for at arbejde med WPF . Denne liste indeholder mange sprog: C# , F# , VB.NET , C++ , Ruby , Python , Delphi (Prism) , Lua og mange flere. Til fuldgyldigt arbejde kan både Visual Studio og Expression Blend bruges . Førstnævnte er kodningsorienteret, og sidstnævnte er designorienteret og giver dig mulighed for at gøre mange ting uden at skulle redigere XAML manuelt . Eksempler på dette er animation, styling, tilstande, oprettelse af kontroller og så videre.
WPF tilbyder en bred vifte af muligheder for at skabe interaktive desktop-applikationer:
Det er en fleksibel mekanisme, der giver dig mulighed for at linke forskellige data gennem XAML markup-udvidelser (fra kontrolegenskabsværdier til offentlige egenskaber, der implementerer databasefelter gennem Entity Framework ). Databinding er repræsenteret af Binding -klassen , som igen er nedarvet fra MarkupExtension , som giver dig mulighed for at bruge bindinger ikke kun i kode, men også i markup:
<StackPanel Orientation= "Horizontal" > <Slider x:Name= "slider" Width= "200" Minimum= "1" Maximum= "100" Værdi= "60" /> <TextBox Text= "{Binding ElementName=slider, Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> </StackPanel>Ud over hovedbindingsklassen implementerer WPF adskillige andre bindingsmekanismer:
De giver dig mulighed for at oprette stylingelementer og bruges som regel kun i markup:
<Button> <Button.Style> <Style TargetType= "Button" > <Setter Property= "FontSize" Value= "20" /> <Setter Property= "Foreground" Value= "LimeGreen" /> </Style> </ Button.Style> </Button>Hvis stilen er indstillet på ressourcer (såsom en ressourceordbog), kan x:Key -attributten bruges til at angive en unik nøgle. Derefter, på det kontrolelement, som du vil anvende typografien på, skal du bruge opmærkningsudvidelsen StaticResource til at binde til den typografi. Hvis du bruger denne teknik, vil stilarterne ikke rode op i markeringen.
De giver dig mulighed for at ændre det grafiske design af elementer og er repræsenteret af ControlTemplate -klassen . I modsætning til stilarter kan du ændre ikke kun den grafiske repræsentation af et element, men også dets struktur. I dette tilfælde angives kontrolskabelonen gennem Skabelonegenskaben .
Et simpelt eksempel på en rund knap:
<Button Content= "Hej!" Background= "LimeGreen" Foreground= "White" > <Button.Template> <ControlTemplate TargetType= "Button" > <Grid> <Ellipse Fill= "{TemplateBinding Background}" Stroke= "{TemplateBinding BorderBrush}" Stretch= "Fyld" /> <ContentPresenter VerticalAlignment= "Center" HorizontalAlignment= "Center" /> </Grid> </ControlTemplate> </Button.Template> </Button>I modsætning til kontrolskabeloner er de indstillet til en specifik datakontekst (som i blokkontroller indstilles via egenskaben DataContext og i listekontroller via ItemsSource ). Selve dataskabelonen er repræsenteret af DataTemplate -klassen . Egenskaben DataType bruges til at udpege den datatype, som skabelonen skal anvendes på.
Ressourcesystemet giver dig mulighed for at kombinere skabeloner, stile, pensler, animationer og mange andre interaktive elementer, hvilket i høj grad forenkler arbejdet med dem. Ressourcer indstilles i egenskaben Ressourcer i FrameworkElement-klassen, hvorfra alle kontroller, layoutpaneler og endda Application-klassen er nedarvet. Dette giver dig mulighed for at oprette et lagdelt ressourcesystem:
WPF introducerer et rigt, skalerbart og fleksibelt sæt af grafikfunktioner:
WPF giver et bibliotek med almindelige 2D-former tegnet med vektorer, såsom rektangler og ellipser, samt grafiske stier. Og i deres funktionalitet implementerer former mange af de funktioner, der er tilgængelige for konventionelle kontroller.
2D-grafik i WPF inkluderer visuelle effekter såsom gradienter, bitmaps, tegninger, videokunst, rotation, skalering og skævhed.
3D-grafikWPF inkluderer også 3D-gengivelsesfunktioner integreret med 2D-grafik for at skabe rigere og mere interessante brugergrænseflader.
.NET | |
---|---|
Implementeringer | |
Arkitektur | |
Infrastruktur | |
Microsoft sprog | |
Andre sprog | |
Windows Foundations | |
Komponenter | |
Sammenligninger |
|
Fremtidige teknologier | |
Informationsressourcer |
Gratis og open source Microsoft -software | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
generel information |
| ||||||||||||
Software _ |
| ||||||||||||
Licenser | |||||||||||||
relaterede emner |
| ||||||||||||
Kategori |
af GUI-elementer | Værktøjssæt (sæt)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
lavt niveau |
| ||||||||||||||||||||||||||
højt niveau |
|