Windows Presentation Foundation ( WPF ) je obdobou WinForms, systému pro vytváření klientských aplikací Windows s vizuálně atraktivními možnostmi interakce s uživatelem, grafickým (prezentačním) subsystémem jako součást .NET Framework (od verze 3.0 ), využívající jazyk XAML . [1] .
WPF je předinstalovaný v systémech Windows Vista ( .NET Framework 3.0), Windows 7 ( .NET Framework 3.5 SP1), Windows 8 (.NET Framework 4.0 a 4.5), Windows 8.1 (.NET Framework 4.5.1) a Windows 10 (.NET Rámec 4.7). Pomocí WPF můžete vytvářet širokou škálu samostatných aplikací i aplikací založených na prohlížeči [2] .
Srdcem WPF je systém vektorového vykreslování, který nezávisí na rozlišení výstupního zařízení a byl vytvořen s ohledem na možnosti moderního grafického hardwaru. WPF poskytuje nástroje pro vytváření vizuálního rozhraní, včetně XAML (eXtensible Application Markup Language), ovládacích prvků, datové vazby, rozvržení, 2D a 3D grafiky, animací, stylů, šablon, dokumentů, textu, multimédií a dekorací [2] .
Grafickou technologií za WPF je DirectX , na rozdíl od Windows Forms , který využívá GDI / GDI+ [3] . Výkon WPF je vyšší než u GDI+ díky použití grafické hardwarové akcelerace prostřednictvím DirectX .
Existuje také oříznutá verze CLR s názvem WPF/E , také známá jako Silverlight .
XAML je deklarativní jazyk pro popis rozhraní založený na XML . Byl také implementován model pro oddělení kódu a designu, který umožňuje spolupráci programátora a designéra. Kromě toho je zde zabudovaná podpora pro styly prvků a samotné prvky lze snadno rozdělit na ovládací prvky druhé úrovně , které jsou zase rozděleny až na úroveň vektorových tvarů a vlastností / akcí. To usnadňuje styling jakéhokoli prvku, například tlačítka .
Pro práci s WPF je vyžadován jakýkoli jazyk kompatibilní s .NET . Tento seznam obsahuje mnoho jazyků: C# , F# , VB.NET , C++ , Ruby , Python , Delphi (Prism) , Lua a mnoho dalších. Pro plnohodnotnou práci lze použít jak Visual Studio , tak Expression Blend . První je orientovaný na kódování a druhý je orientovaný na design a umožňuje vám dělat mnoho věcí, aniž byste museli ručně upravovat XAML . Příklady toho jsou animace, styly, stavy, vytváření ovládacích prvků a tak dále.
WPF poskytuje širokou škálu možností pro vytváření interaktivních desktopových aplikací:
Jedná se o flexibilní mechanismus, který vám umožňuje propojovat různá data prostřednictvím rozšíření značek XAML (od hodnot vlastností ovládacích prvků až po veřejné vlastnosti, které implementují databázová pole prostřednictvím Entity Framework ). Datová vazba je reprezentována třídou Binding , která je zase zděděna z MarkupExtension , což umožňuje používat vazby nejen v kódu, ale také v značkách:
< Orientace StackPanel = "Horizontální" > <Posuvník x:Název= "posuvník" Šířka= "200" Minimum= "1" Maximum= "100" Hodnota= "60" /> <TextBox Text= "{Binding ElementName=slider, Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> </StackPanel>Kromě hlavní třídy Binding implementuje WPF několik dalších vazebných mechanismů:
Umožňují vám vytvářet prvky stylu a zpravidla se používají pouze v označení:
<Button> <Button.Style> <Style TargetType= "Button" > <Setter Property= "FontSize" Value= "20" /> <Setter Property= "Foreground" Value= "LimeGreen" /> </Style> </ Button.Style> </Button>Pokud je styl nastaven na prostředcích (jako je slovník zdrojů), lze k určení jedinečného klíče použít atribut x:Key . Poté v ovládacím prvku, na který chcete styl použít, musíte použít rozšíření značek StaticResource k navázání na tento styl. Pokud použijete tuto techniku, pak styly nebudou zaplňovat značení.
Umožňují měnit grafický design prvků a jsou reprezentovány třídou ControlTemplate . Na rozdíl od stylů můžete měnit nejen grafické znázornění prvku, ale také jeho strukturu. V tomto případě je šablona ovládacího prvku určena pomocí vlastnosti Template .
Jednoduchý příklad kulatého tlačítka:
<Button Content= "Ahoj!" Background= "LimeGreen" Foreground= "White" > <Button.Template> <ControlTemplate TargetType= "Button" > <Mřížka> <Ellipse Fill= "{TemplateBinding Background}" Stroke= "{TemplateBinding BorderBrush}" Stretch= "Fill" /> <ContentPresenter VerticalAlignment= "Center" HorizontalAlignment= "Center" /> </Grid> </ControlTemplate> </Button.Template> </Button>Na rozdíl od šablon ovládacích prvků jsou nastaveny pro konkrétní datový kontext (který se v ovládacích prvcích bloku nastavuje pomocí vlastnosti DataContext a v ovládacích prvcích seznamu prostřednictvím ItemsSource ). Samotná datová šablona je reprezentována třídou DataTemplate . Vlastnost DataType se používá k označení datového typu, na který má být šablona aplikována.
Zdrojový systém umožňuje kombinovat šablony, styly, štětce, animace a mnoho dalších interaktivních prvků, což značně zjednodušuje práci s nimi. Prostředky se nastavují ve vlastnosti Resources třídy FrameworkElement, ze které se dědí všechny ovládací prvky, panely rozložení a dokonce i třída Application. To vám umožní vytvořit vrstvený systém zdrojů:
WPF představuje bohatou, škálovatelnou a flexibilní sadu grafických funkcí:
WPF poskytuje knihovnu běžných 2D tvarů kreslených pomocí vektorů, jako jsou obdélníky a elipsy, a také grafické cesty. A ve své funkčnosti tvary implementují mnoho funkcí, které jsou dostupné konvenčním ovládacím prvkům.
2D grafika ve WPF zahrnuje vizuální efekty, jako jsou přechody, bitmapy, kresby, videoart, rotace, změna měřítka a zkosení.
3D grafikaWPF také obsahuje možnosti 3D vykreslování integrované s 2D grafikou pro vytvoření bohatších a zajímavějších uživatelských rozhraní.
.SÍŤ | |
---|---|
Implementace | |
Architektura | |
Infrastruktura | |
jazyky Microsoft | |
Jiné jazyky | |
Základy Windows | |
Komponenty | |
Srovnání |
|
Budoucí technologie | |
Informační zdroje |
Bezplatný a otevřený software společnosti Microsoft | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
obecná informace |
| ||||||||||||
Software _ |
| ||||||||||||
licence | |||||||||||||
související témata |
| ||||||||||||
Kategorie |
prvků GUI | Toolkity (sady)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
na nízké úrovni |
| ||||||||||||||||||||||||||
vysoká úroveň |
|