Windows Presentation Foundation

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 26 april 2014; kontroller kräver 26 redigeringar .

Windows Presentation Foundation ( WPF ) är en analog av WinForms, ett system för att bygga Windows -klientapplikationer med visuellt attraktiva användarinteraktionsmöjligheter, ett grafiskt (presentations) undersystem som en del av .NET Framework (från och med version 3.0 ), med hjälp av XAML- språket [1] .

WPF är förinstallerat på Windows Vista ( .NET Framework 3.0), Windows 7 ( .NET Framework 3.5 SP1), Windows 8 (.NET Framework 4.0 och 4.5), Windows 8.1 (.NET Framework 4.5.1) och Windows 10 (.NET Ram 4.7). Med WPF kan du skapa ett brett utbud av både fristående och webbläsarbaserade applikationer [2] .

Teknikfunktioner

Hjärtat i WPF är ett vektorrenderingssystem som inte beror på upplösningen hos utenheten och som skapades med hänsyn till kapaciteten hos modern grafikhårdvara. WPF tillhandahåller verktyg för att skapa ett visuellt gränssnitt, inklusive XAML (eXtensible Application Markup Language), kontroller, databindning, layouter, 2D- och 3D-grafik, animationer, stilar, mallar, dokument, text, multimedia och dekoration [2] .

Grafiktekniken bakom WPF är DirectX , till skillnad från Windows Forms , som använder GDI / GDI+ [3] . Prestanda för WPF är högre än för GDI+ på grund av användningen av grafikhårdvaruacceleration genom DirectX .

Det finns också en avskalad version av CLR som kallas WPF/E , även känd som Silverlight .

Använda XAML- markering

XAML är ett deklarativt gränssnittsbeskrivningsspråk baserat på XML . En modell för att separera kod och design har också implementerats, vilket gör att programmeraren och designern kan samarbeta. Dessutom finns det inbyggt stöd för elementstilar, och själva elementen delas enkelt upp i kontroller på andra nivån , som i sin tur är uppdelade ner till nivån av vektorformer och egenskaper/åtgärder. Detta gör det enkelt att styla vilket element som helst, till exempel en knapp .

Utvecklingsverktyg

Alla .NET -kompatibla språk krävs för att fungera med WPF . Den här listan innehåller många språk: C# , F# , VB.NET , C++ , Ruby , Python , Delphi (Prism) , Lua och många fler. För fullfjädrad arbete kan både Visual Studio och Expression Blend användas . Den förra är kodningsorienterad och den senare är designorienterad och låter dig göra många saker utan att behöva redigera XAML manuellt . Exempel på detta är animering, styling, tillstånd, skapa kontroller och så vidare.

Funktioner

WPF erbjuder ett brett utbud av alternativ för att skapa interaktiva skrivbordsapplikationer:

Databindning

Det är en flexibel mekanism som låter dig länka olika data genom XAML-markeringstillägg (från kontrollegenskapsvärden till offentliga egenskaper som implementerar databasfält via Entity Framework ). Databindning representeras av klassen Binding , som i sin tur ärvs från MarkupExtension , som låter dig använda bindningar inte bara i kod, utan även i uppmärkning:

<StackPanel Orientation= "Horizontal" > <Slider x:Name= "slider" Width= "200" Minimum= "1" Maximum= "100" Value= "60" />         <TextBox Text= "{Binding ElementName=slider, Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> </StackPanel>

Förutom den huvudsakliga bindningsklassen implementerar WPF flera andra bindningsmekanismer:

  • MultiBinding  - låter dig skapa flera bindningar genom att ange flera element
  • TemplateBinding  - används i mallar för att binda en egenskap hos ett element inuti en mall med en egenskap för elementet som mallen appliceras på
  • PriorityBinding  - rangordnar listan över bindningar och väljer från dem egenskapen (enligt prioritet) som bindningen ska tillämpas på. Om bindningen med högst prioritet framgångsrikt returnerar ett värde, behöver du inte bearbeta de andra bindningarna i listan.

Stilar

De låter dig skapa stylingelement och används som regel endast i uppmärkning:

<Button>         <Button.Style>             <Style TargetType= "Button" > <Setter Property= "FontSize" Value= "20" />                 <Setter Property= "Foreground" Value= "LimeGreen" />             </Style>         </ Button.Style>     </Button>

Om stilen är inställd på resurser (som en resurslexikon), kan x:Key- attributet användas för att ange en unik nyckel. Sedan, på kontrollen som du vill tillämpa stilen på, måste du använda uppmärkningstillägget StaticResource för att binda till den stilen. Om du använder den här tekniken kommer stilarna inte att störa upp markeringen.

Kontrollmallar

De låter dig ändra den grafiska designen av element och representeras av klassen ControlTemplate . Till skillnad från stilar kan du ändra inte bara den grafiska representationen av ett element, utan också dess struktur. I det här fallet specificeras kontrollmallen genom egenskapen Template .

Ett enkelt exempel på en rund knapp:

<Button Content= "Hej!" Background= "LimeGreen" Foreground= "White" >         <Button.Template>             <ControlTemplate TargetType= "Button" >                 <Grid>                     <Ellipse Fill= "{TemplateBinding Background}" Stroke= "{TemplateBinding BorderBrush}" Stretch= "Fyll" />                     <ContentPresenter VerticalAlignment= "Center" HorizontalAlignment= "Center" />                 </Grid>             </ControlTemplate>         </Button.Template>     </Button>

Datamallar

Till skillnad från kontrollmallar är de inställda för en specifik datakontext (som i blockkontroller ställs in via DataContext- egenskapen och i listkontroller via ItemsSource ). Själva datamallen representeras av klassen DataTemplate . Egenskapen DataType används för att ange den datatyp som mallen ska tillämpas på.

Resurser

Resurssystemet låter dig kombinera mallar, stilar, penslar, animationer och många andra interaktiva element, vilket avsevärt förenklar arbetet med dem. Resurser ställs in i egenskapen Resources för klassen FrameworkElement, från vilken alla kontroller, layoutpaneler och till och med Application-klassen ärvs. Detta låter dig skapa ett skiktat resurssystem:

  • resurser inom ett objekt - endast giltigt för det objektet
  • resurser inuti layoutpanelen (till exempel Grid) - låter dig ställa in resurskontextgränsen på nivån för denna panel
  • resurser i fönsterfönstret - om programmet använder flera fönster, kommer resurserna i ett fönster inte att vara tillgängliga för resurserna i ett annat fönster
<Window.Resources> <SolidColorBrush x:Key= "SampleBrush" Color= "LimeGreen" /> </Window.Resources> ... <Button Content= "Hej!" Background= "{StaticResource SampleBrush}" />
  • applikationsresurser - tillgängliga överallt (vanligtvis specificerade i en separat resurslexikon)

Grafik

WPF introducerar en rik, skalbar och flexibel uppsättning grafikfunktioner:

  • Upplösning och enhetsoberoende grafik. Den grundläggande måttenheten i WPF-grafiksystemet är den enhetsoberoende pixeln, som är 1/96:e av en tum, oavsett den faktiska skärmupplösningen.
  • Ytterligare stöd för grafik och animering. WPF förenklar grafikprogrammering genom att automatiskt hantera animationer. Utvecklaren ska inte ta itu med bearbetning av animationsscener, renderingsslingor och bilinjär interpolation
  • hårdvaruacceleration. WPF-grafiksystemet drar fördel av grafikhårdvaran för att minska CPU-användningen.
2D-grafik

WPF tillhandahåller ett bibliotek med vanliga 2D-former ritade med vektorer, såsom rektanglar och ellipser, såväl som grafiska banor. Och i sin funktionalitet implementerar former många av funktionerna som är tillgängliga för konventionella kontroller.

2D-grafik i WPF inkluderar visuella effekter som gradienter, bitmappar, ritningar, videokonst, rotation, skalning och skevhet.

3D-grafik

WPF inkluderar också 3D-renderingsfunktioner integrerade med 2D-grafik för att skapa rikare och mer intressanta användargränssnitt.

Versioner

  • WPF 3.0 (november 2006)
  • WPF 3.5 (november 2007)
  • WPF 3.5 SP1 (augusti 2008)
  • WPF 4 (april 2010)
  • WPF 4.5 (augusti 2012)
  • WPF 4.5.1 (oktober 2013)
  • WPF 4.5.2 (maj 2014)
  • WPF 4.6 (juli 2015)

Se även

Litteratur

  • Matthew McDonald. WPF: Windows Presentation Foundation i .NET 4.5 med C# 5.0 Exempel för proffs, 4th Edition = Pro WPF 4.5 i C# 2012: Windows Presentation Foundation i .NET 4.5, 4th edition. - M. : "Williams" , 2013. - 1024 sid. - ISBN 978-5-8459-1854-3 .
  • Matthew McDonald. WPF: Windows Presentation Foundation i .NET 4.0 med C# 2010 Exempel för proffs = Pro WPF i C# 2010: Windows Presentation Foundation med .NET 4.0. - M. : "Williams" , 2011. - S. 1024. - ISBN 978-5-8459-1657-0 .
  • Andersson, Chris. Grunderna i Windows Presentation Foundation. - St Petersburg. : BHV-Petersburg , 2008. - 432 sid. — ISBN 978-5-9775-0265-8 .
  • Daniel M. Solis. Illustrerad WPF. - USA: Apress , 2009. - 508 sid. — ISBN 978-1-4302-1910-1 .

Länkar

Anteckningar

  1. Uttalade "zaml"
  2. 12 MSDN . Introduktion till WPF . Microsoft. Hämtad 15 november 2010. Arkiverad från originalet 14 februari 2012.
  3. Matthew McDonald. WPF: Windows Presentation Foundation i .NET 3.5 med C# 2008 Exempel för proffs = Pro WPF i C# 2008: Windows Presentation Foundation med .NET 3.5. - 2:a. - M. : "Williams" , 2008. - S. 25. - 928 sid. - ISBN 978-5-8459-1429-3 .