Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vítá vás Průvodce pro desktop pro WPF (Windows Presentation Foundation), architekturu uživatelského rozhraní, která je nezávislá na rozlišení a používá vektorový vykreslovací modul navržený tak, aby využíval moderní grafický hardware. WPF (Windows Presentation Foundation) nabízí ucelenou sadu funkcí pro vývoj aplikací, mezi které patří jazyk Extensible Application Markup Language (XAML), ovládací prvky, datové vazby, rozložení, 2D a 3D grafika, animace, styly, šablony, dokumenty, média, text a typografie. WPF je součástí .NET, takže můžete vytvářet aplikace, které obsahují další prvky rozhraní .NET API.
Existují dvě implementace WPF:
Verze pro .NET (tato příručka):
Opensourcová implementace WPF hostovaná na GitHubu, která běží na .NET. Návrhář XAML vyžaduje minimálně Visual Studio 2019 verze 16.8. V závislosti na vaší verzi .NET ale možná budete muset použít novější verzi sady Visual Studio.
I když je .NET multiplatformní technologií, WPF běží jenom ve Windows.
Verze pro .NET Framework 4:
Implementace WPF v rozhraní .NET Framework podporovaná v sadách Visual Studio 2019 a Visual Studio 2017.
.NET Framework 4 je verze rozhraní .NET určená jen pro Windows a považuje se za součást operačního systému Windows. Tato verze WPF je distribuována spolu s rozhraním .NET Framework.
Tento přehled je určený pro nováčky a zabývá se klíčovými možnostmi a koncepty WPF. Pokud se chcete dozvědět, jak vytvořit aplikaci WPF, přečtěte si kurz k vytvoření nové aplikace WPF.
Proč upgradovat z rozhraní .NET Framework
Při upgradu aplikace z rozhraní .NET Framework na .NET budete mít výhody:
- Lepší výkon
- Nová rozhraní .NET API
- Nejnovější vylepšení jazyka
- Vylepšení přístupnosti a spolehlivosti
- Aktualizované nástroje a další
Informace o upgradu aplikace najdete v tématu Postup upgradu desktopové aplikace WPF na .NET.
Program s WPF
WPF existuje jako podmnožina typů .NET, které jsou z větší části umístěné v oboru názvů System.Windows. Pokud jste dříve vytvářeli aplikace v rozhraní .NET a využívali při tom architektury, jako jsou ASP.NET a Windows Forms, základní programovací prostředí WPF by vám mělo být známé. Řeší se v něm:
- Vytváření instancí tříd
- Nastavení vlastností
- Volání metod
- Zpracovat události
WPF obsahuje více programovacích konstrukcí, které vylepšují vlastnosti a události: vlastnosti závislostí a směrované události.
Označení a kód na pozadí
WPF umožňuje vyvíjet aplikaci pomocí značek i kódu, prostředí, se kterým by měli být vývojáři ASP.NET obeznámeni. Obecně používáte značkovací jazyk XAML k implementaci vzhledu aplikace, zatímco pro implementaci jejího chování využíváte spravované programovací jazyky (kód na pozadí). Toto oddělení vzhledu a chování má následující výhody:
Snížení nákladů na vývoj a údržbu, protože značky specifické pro vzhled nejsou nedílnou součástí kódu specifického pro chování.
Vývoj je efektivnější, protože návrháři mohou implementovat vzhled aplikace současně s vývojáři, kteří implementují chování aplikace.
globalizace a lokalizace pro aplikace WPF je zjednodušená.
Označení
XAML je jazyk kódu založený na jazyce XML, který implementuje vzhled aplikace deklarativním způsobem. Obvykle jej využijete při definici oken, dialogových oken, stránek a uživatelských ovládacích prvků, které pak vyplníte ovládacími prvky, obrazci a grafikou.
Následující příklad používá XAML k implementaci vzhledu okna, které obsahuje jedno tlačítko:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="Window with button"
Width="250" Height="100">
<!-- Add button to window -->
<Button Name="button">Click Me!</Button>
</Window>
Konkrétně tento kód XAML definuje okno a tlačítko pomocí elementů Window a Button. Každý prvek je nakonfigurovaný s atributy, jako je atribut Window elementu Title, který určuje text záhlaví okna. WpF za běhu převede prvky a atributy, které jsou definovány v kódu na instance tříd WPF. Například prvek Window je převeden na instanci třídy Window, jejíž Title vlastnost je hodnota atributu Title.
Následující obrázek znázorňuje uživatelské rozhraní definované XAML v předchozím příkladu:
Vzhledem k tomu, že XAML je založený na jazyce XML, uživatelské rozhraní, se kterým vytváříte, je sestaveno v hierarchii vnořených elementů, které se označují jako strom elementů. Strom elementů poskytuje logický a intuitivní způsob vytváření a správy uživatelských rozhraní.
Kód na pozadí
Hlavním chováním aplikace je implementovat funkce, které reagují na interakce uživatele. Těmi jsou třeba kliknutí na nabídku nebo tlačítko a v reakci na to volání obchodní logiky a logiky přístupu k datům. Ve WPF je toto chování implementováno v kódu, který je přidružen ke značkám. Tento typ kódu se označuje jako code-behind. Následující příklad ukazuje aktualizovaný kód z předchozího příkladu a kód na pozadí:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.AWindow"
Title="Window with button"
Width="250" Height="100">
<!-- Add button to window -->
<Button Name="button" Click="button_Click">Click Me!</Button>
</Window>
Aktualizované značky definují rozhraní xmlns:x a mapují ho na schéma, které přidává podporu typů kódu na pozadí. Atribut x:Class slouží k přidružení třídy kódu na pozadí k těmto konkrétním značkám XML. Vzhledem k tomu, že je tento atribut deklarovaný v elementu <Window>, třída kódu na pozadí musí dědit z třídy Window.
using System.Windows;
namespace SDKSample
{
public partial class AWindow : Window
{
public AWindow()
{
// InitializeComponent call is required to merge the UI
// that is defined in markup with this class, including
// setting properties and registering event handlers
InitializeComponent();
}
void button_Click(object sender, RoutedEventArgs e)
{
// Show message box when button is clicked.
MessageBox.Show("Hello, Windows Presentation Foundation!");
}
}
}
Namespace SDKSample
Partial Public Class AWindow
Inherits System.Windows.Window
Public Sub New()
' InitializeComponent call is required to merge the UI
' that is defined in markup with this class, including
' setting properties and registering event handlers
InitializeComponent()
End Sub
Private Sub button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
' Show message box when button is clicked.
MessageBox.Show("Hello, Windows Presentation Foundation!")
End Sub
End Class
End Namespace
InitializeComponent je volána z konstruktoru třídy code-behind, aby sloučila uživatelské rozhraní definované v kódu se třídou code-behind. (InitializeComponent se vygeneruje při sestavování aplikace, proto není zapotřebí ruční implementace.) Kombinace x:Class a InitializeComponent zajišťuje, že se implementace při každém vytvoření správně inicializuje.
Všimněte si, že ve značkách element <Button> definoval hodnotu button_Click pro atribut Click. Když se značky a kód na pozadí inicializují a začnou spolupracovat, událost Click pro tlačítko se automaticky namapuje na metodu button_Click. Po kliknutí na tlačítko se zavolá obslužná rutina události a zavoláním metody System.Windows.MessageBox.Show se zobrazí okno se zprávou.
Následující obrázek znázorňuje výsledek po kliknutí na tlačítko:
Zadávání a příkazy
Ovládací prvky nejčastěji detekují vstupy uživatelů a reagují na ně. Systém vstupů WPF používá jak přímé, tak směrované události, které podporují textový vstup, správu fokusu a nastavování pozice myši.
Aplikace často mají složité požadavky na vstup. WPF nabízí systém příkazů, který odděluje akce uživatelského vstupu od kódu, který na tyto akce reaguje. Tento systém příkazů umožňuje, aby jednu logiku příkazu volalo několik zdrojů. Považme například běžné operace úprav, které se používají v různých aplikacích: kopírování, vyjímání a vkládání. Když se tyto operace implementují pomocí příkazů, dají se zavolat různými akcemi uživatelů.
Ovládání
Uživatelské zkušenosti, které jsou poskytovány modelem aplikace, jsou sestaveny z ovládacích prvků. Ve WPF je ovládací prvek obecným pojmem pro kategorii tříd WPF s následujícími charakteristikami:
- Jsou umístěné buď v okně, nebo na stránce.
- Mají uživatelské rozhraní.
- Implementují určité chování.
Další informace naleznete v tématu ovládací prvky .
Ovládací prvky WPF podle funkce
Předdefinované ovládací prvky WPF jsou uvedené tady:
tlačítka: Button a RepeatButton.
zobrazení a výběr data: Calendar a DatePicker.
dialogová okna: OpenFileDialog, PrintDialoga SaveFileDialog.
Digitální inkoust: InkCanvas a InkPresenter.
dokumenty: DocumentViewer, FlowDocumentPageViewer, FlowDocumentReader, FlowDocumentScrollViewera StickyNoteControl.
vstup: TextBox, RichTextBoxa PasswordBox.
rozložení: Border, BulletDecorator, Canvas, DockPanel, Expander, Grid, GridView, GridSplitter, GroupBox, Panel, ResizeGrip, Separator, ScrollBar, ScrollViewer, StackPanel, Thumb, Viewbox, VirtualizingStackPanel, Windowa WrapPanel.
Media: Image, MediaElementa SoundPlayerAction.
nabídky: ContextMenu, Menua ToolBar.
navigační: Frame, Hyperlink, Page, NavigationWindowa TabControl.
Výběr : CheckBox, ComboBox, ListBox, RadioButtona Slider.
informace o uživateli: AccessText, Label, Popup, ProgressBar, StatusBar, TextBlocka ToolTip.
Rozložení
Při vytváření uživatelského rozhraní uspořádáte ovládací prvky podle umístění a velikosti tak, aby se vytvořilo rozložení. Klíčovým požadavkem každého rozložení je přizpůsobit se změnám velikosti okna a nastavení zobrazení. Místo vynucení psaní kódu pro přizpůsobení rozložení za těchto okolností poskytuje WPF prvotřídní rozšiřitelný systém rozložení za vás.
Základním kamenem systému rozložení je relativní pozicování, které zvyšuje schopnost přizpůsobit se měnícím se okenním a zobrazovacím podmínkám. Systém rozložení navíc spravuje vyjednávání mezi ovládacími prvky, aby se stanovilo rozložení. Vyjednávání je dvoustupňový proces: nejdříve ovládací prvek informuje sobě nadřazený prvek, jakou pozici a velikost vyžaduje. Pak nadřazený prvek podá ovládacímu prvku informaci, jaký prostor je k dispozici.
Systém rozložení je vystaven ovládacím prvkům pro děti prostřednictvím základních tříd WPF. Pro běžná rozložení, jako jsou mřížky, stohování a ukotvení, zahrnuje WPF několik ovládacích prvků rozložení:
Canvas: Podřízené ovládací prvky poskytují vlastní rozložení.
DockPanel: Ovládací prvky jsou zarovnané k okrajům panelu.
Grid: Podřízené ovládací prvky jsou umístěny podle řádků a sloupců.
StackPanel: Podřízené ovládací prvky jsou uspořádány svisle nebo vodorovně.
VirtualizingStackPanel: Podřízené ovládací prvky jsou virtualizované a uspořádané do jedné řady, která je orientována vodorovně nebo svisle.
WrapPanel: Podřízené ovládací prvky jsou umístěny v pořadí zleva doprava a zabalené na další řádek, pokud není na aktuálním řádku dostatek místa.
Následující příklad používá DockPanel k rozložení několika ovládacích prvků TextBox:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.LayoutWindow"
Title="Layout with the DockPanel" Height="143" Width="319">
<!--DockPanel to layout four text boxes-->
<DockPanel>
<TextBox DockPanel.Dock="Top">Dock = "Top"</TextBox>
<TextBox DockPanel.Dock="Bottom">Dock = "Bottom"</TextBox>
<TextBox DockPanel.Dock="Left">Dock = "Left"</TextBox>
<TextBox Background="White">This TextBox "fills" the remaining space.</TextBox>
</DockPanel>
</Window>
DockPanel umožňuje podřízeným TextBox ovládacím prvkům sdělit, jak je uspořádat. K tomu DockPanel implementuje Dock připojenou vlastnost, která je vystavená podřízeným ovládacím prvkům, aby každý z nich mohl určit styl docku.
Poznámka:
Vlastnost implementovaná nadřazeným ovládacím prvku pro použití podřízenými ovládacími prvky je konstrukce WPF označovaná jako připojená vlastnost.
Následující obrázek znázorňuje výsledek kódu XAML v předchozím příkladu:
Datová vazba
Většina aplikací je vytvořená tak, aby uživatelům poskytovala prostředky k zobrazení a úpravě dat. Pro aplikace WPF je už ukládání dat a přístup k nim zajištěn mnoha různými knihovnami .NET pro přístup k datům, jako jsou SQL a Entity Framework Core. Po přístupu k datům a jejich načtení do spravovaných objektů aplikace začne práce s aplikacemi WPF. V podstatě to zahrnuje dvě věci:
Kopírování dat ze spravovaných objektů do ovládacích prvků, kde je možné data zobrazit a upravit.
Zajištění, aby se změny dat provedené pomocí ovládacích prvků zkopírovaly zpět do spravovaných objektů.
Aby byl vývoj aplikací jednodušší, WPF nabízí propracovaný modul pro datové vazby, který tyto kroky zajišťuje automaticky. Základní jednotkou modulu datových vazeb je třída Binding, jejíž úlohou je vytvoření vazby ovládacího prvku (cíl vazby) k datovému objektu (zdroj vazby). Tento vztah je znázorněný následujícím obrázkem:
WPF podporuje deklaraci vazeb přímo ve značkách XAML. Následující kód XAML například vytváří vazbu mezi vlastností Text objektu TextBox a vlastností Name objektu, který používá syntaxi XAML {Binding ... }. Předpokládá se tady, že existuje datový objekt nastavený pro vlastnost DataContext objektu Window s vlastností Name.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.DataBindingWindow">
<!-- Bind the TextBox to the data source (TextBox.Text to Person.Name) -->
<TextBox Name="personNameTextBox" Text="{Binding Path=Name}" />
</Window>
Modul pro datové vazby WPF poskytuje více než jen vazby, nabízí i ověřování, řazení, filtrování a seskupování. Kromě toho datové vazby podporují datové šablony, aby bylo možné pro svázaná data vytvářet vlastní uživatelské rozhraní.
Další informace naleznete v tématu Přehled datové vazby.
Grafika a animace
WPF nabízí rozsáhlou a flexibilní sadu grafických funkcí, které mají tyto výhody:
Grafika nezávislá na rozlišení a zařízeních. Základní měrnou jednotkou v grafickém systému WPF je pixel nezávislý na zařízení, který představuje 1/96 palce a nabízí základ pro vykreslování nezávislé na rozlišení a zařízení. Každý pixel nezávislý na zařízení se automaticky škáluje tak, aby odpovídal nastavení bodů na palec (dpi) systému, na který se vykresluje.
vylepšená přesnost. Souřadnicový systém WPF se měří s čísly s plovoucí desetinnou čárkou s dvojitou přesností místo s jednoduchou přesností. Transformace a hodnoty neprůhlednosti jsou také vyjádřeny jako dvojitá přesnost. WPF také podporuje širokou barevnou gamutu (scRGB) a poskytuje integrovanou podporu pro správu vstupů z různých barevných prostorů.
Podpora rozšířené grafiky a animace. WPF zjednodušuje programování grafiky, protože za vás spravuje scény animací. Není zapotřebí se zabývat zpracováním scén, vykreslovacími smyčkami a bilineární interpolací. Kromě toho WPF poskytuje podporu pro detekci zásahů a plnou podporu alfa kompozice.
Hardwarová akcelerace. Grafický systém WPF využívá grafický hardware k minimalizaci využití procesoru.
2D grafika
WPF nabízí knihovnu běžných vektorových 2D obrazců, jako jsou obdélníky a elipsy. Tyto obrazce neslouží jen k zobrazování, implementují mnoho funkcí, které byste očekávali od ovládacích prvků, například vstup z klávesnice nebo myši.
2D obrazce poskytované WPF pokrývají standardní sadu základních obrazců. Můžete se ale setkat s tím, že budete potřebovat vytvořit vlastní obrazce, které vám pomůžou navrhnout přizpůsobené uživatelské rozhraní. WPF poskytuje geometrie, se kterými můžete vytvořit vlastní obrazec. Ten se pak dá vykreslit napřímo, použít jako štětec, nebo využít k připojování jiných obrazců a ovládacích prvků.
Další informace naleznete v tématu Přehled geometrie.
Podmnožina funkcí WPF 2D zahrnuje vizuální efekty, jako jsou přechody, bitové mapy, kresby, malování pomocí videí, rotace, škálování a zkosení. Pro všechny tyto efekty se využívají štětce. Následující obrázek znázorňuje několik příkladů:
Další informace najdete v přehledu štětců WPF.
3D vykreslování
WPF také obsahuje 3D možnosti vykreslování, které se integrují s 2D grafikou, aby bylo možné vytvářet zajímavější a zajímavější uživatelská rozhraní. Například následující obrázek znázorňuje 2D obrázky vykreslené na 3D obrazcích:
Další informace najdete v přehledu 3D grafiky.
Animace
Podpora animací WPF umožňuje, aby ovládací prvky rostly, třásly se, otáčely a mizely, čímž se vytvářejí zajímavé přechody stránek a podobně. Většinu tříd WPF můžete animovat, dokonce i vlastní třídy. Následující obrázek znázorňuje jednoduchou animaci v akci:
Podrobnosti viz Přehled animace.
Text a typografie
Pro vysoce kvalitní vykreslování textu WPF nabízí tyto funkce:
- Podpora písem OpenType
- Vylepšení ClearType.
- Vysoký výkon, který využívá hardwarovou akceleraci.
- Integrace textu s multimédii, grafikou a animací
- Podpora mezinárodních fontů a mechanismy pro náhradní fonty.
Jako ukázku integrace textu s grafikou znázorňuje následující obrázek použití textových dekorací:
Další informace naleznete v tématu Typografie v systému Windows Presentation Foundation.
Přizpůsobení aplikací WPF
Až do této chvíle jsme popisovali základní stavební kameny WPF pro vývoj aplikací:
- Model aplikace slouží k hostování a doručování obsahu aplikace, který se skládá hlavně z ovládacích prvků.
- Aby bylo uspořádávání prvků v uživatelském rozhraní jednodušší, používáte systém rozložení WPF.
- Pomocí datových vazeb se snižuje náročnost integrace uživatelského rozhraní s daty.
- Pokud chcete vylepšit vizuální vzhled aplikace, použijete komplexní řadu grafických prvků, animací a podpory médií, které poskytuje WPF.
Často ale základ nestačí, když chcete vytvořit a spravovat skutečně unikátní a vizuálně působivé uživatelské prostředí. Standardní ovládací prvky WPF se nemusí integrovat s požadovaným vzhledem vaší aplikace. Data se nemusí zobrazovat nejúčinnějším způsobem. Celkové uživatelské prostředí vaší aplikace nemusí být vhodné pro výchozí vzhled a chování motivů Windows.
Z toho důvodu WPF nabízí různé mechanismy, jak vytvářet jedinečná uživatelská prostředí.
Model obsahu
Hlavním účelem většiny ovládacích prvků WPF je zobrazovat obsah. Ve WPF se typ a počet položek, které mohou představovat obsah ovládacího prvku, označuje jako model obsahu ovládacího prvku. Některé ovládací prvky můžou obsahovat jedinou položku a typ obsahu. Například oblast TextBox je řetězcová hodnota, která se přiřazuje do vlastnosti Text.
Jiné ovládací prvky však můžou obsahovat několik položek různých typů obsahu. Obsah Button, který se určuje vlastností Content, může mít různé položky, včetně ovládacích prvků rozložení, textu, obrázků a obrazců.
Další informace o typech obsahu, které jsou podporovány různými ovládacími prvky, naleznete v tématu WPF content model.
Spouštěče
I když hlavním účelem kódu XAML je implementace vzhledu aplikace, můžete také použít XAML k implementaci některých aspektů chování aplikace. Jedním z příkladů je použití triggerů ke změně vzhledu aplikace na základě interakcí uživatelů. Další informace naleznete v tématu Styly a šablony.
Šablony
Výchozí uživatelská rozhraní pro ovládací prvky WPF se obvykle vytvářejí z jiných ovládacích prvků a obrazců. Například Button se skládá z ovládacích prvků ButtonChrome i ContentPresenter. ButtonChrome poskytuje standardní vzhled tlačítka, zatímco ContentPresenter zobrazí obsah tlačítka podle Content vlastnosti.
Někdy výchozí vzhled ovládacího prvku nemusí být v souladu s celkovým vzhledem aplikace. V tomto případě můžete pomocí ControlTemplate změnit vzhled uživatelského rozhraní ovládacího prvku beze změny jeho obsahu a chování.
Když například kliknete na ovládací prvek Button, vyvolá událost Click. Změnou šablony tlačítka tak, aby zobrazovalo obrazec Ellipse, se vizuální aspekt ovládacího prvku změní, ale jeho funkce zůstane stále stejná. Stále můžete na vizuální aspekt ovládacího prvku kliknout a podle očekávání se vyvolá událost Click.
Šablony dat
Zatímco šablona ovládacího prvku umožňuje určit vzhled ovládacího prvku, datová šablona umožňuje určit vzhled obsahu ovládacího prvku. Šablony dat se často používají k vylepšení způsobu zobrazení vázaných dat. Následující obrázek znázorňuje výchozí vzhled ListBox vázané na kolekci Task objektů, kde má každý úkol název, popis a prioritu:
Výchozí vzhled je to, co byste očekávali od ListBox. Výchozí vzhled každého úkolu však obsahuje pouze název úkolu. Chcete-li zobrazit název, popis a prioritu úkolu, musí být výchozí vzhled položek vázaného seznamu ovládacího prvku ListBox změněn pomocí DataTemplate. Tady je příklad zavedení šablony dat vytvořené pro objekt Task.
ListBox si zachovává své chování a celkový vzhled, mění se pouze vzhled obsahu zobrazovaného v seznamu.
Další informace naleznete v tématu Přehled šablon dat.
Styly
Styly umožňují vývojářům a návrhářům standardizovat konkrétní vzhled jejich produktu. WPF poskytuje model silného stylu, jehož základem je prvek Style. Styly můžou typům zavádět hodnoty vlastností. Dají se zavádět automaticky všem prvkům podle typu, nebo jednotlivým odkazovaným objektům. Následující ukázka vytváří styl, který nastavuje barvu pozadí pro každý prvek Button v okně na Orange:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.StyleWindow"
Title="Styles">
<Window.Resources>
<!-- Style that will be applied to all buttons for this window -->
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Orange" />
<Setter Property="BorderBrush" Value="Crimson" />
<Setter Property="FontSize" Value="20" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Margin" Value="5" />
</Style>
</Window.Resources>
<StackPanel>
<!-- This button will have the style applied to it -->
<Button>Click Me!</Button>
<!-- This label will not have the style applied to it -->
<Label>Don't Click Me!</Label>
<!-- This button will have the style applied to it -->
<Button>Click Me!</Button>
</StackPanel>
</Window>
Vzhledem k tomu, že tento styl cílí na všechny ovládací prvky Button, styl se automaticky použije na všechna tlačítka v okně, jak je znázorněno na následujícím obrázku:
Další informace naleznete v tématu Styly a šablony.
Prostředky
Ovládací prvky v aplikaci by měly mít stejný vzhled, který může zahrnovat vše od písem a barev pozadí po šablony ovládacích prvků, šablony dat a styly. Podporu prostředků uživatelského rozhraní wpF můžete použít k zapouzdření těchto prostředků do jednoho umístění pro opakované použití.
Následující příklad definuje společnou barvu pozadí, kterou sdílí Button a Label:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.ResourcesWindow"
Title="Resources Window">
<!-- Define window-scoped background color resource -->
<Window.Resources>
<SolidColorBrush x:Key="defaultBackground" Color="Red" />
</Window.Resources>
<!-- Button background is defined by window-scoped resource -->
<Button Background="{StaticResource defaultBackground}">One Button</Button>
<!-- Label background is defined by window-scoped resource -->
<Label Background="{StaticResource defaultBackground}">One Label</Label>
</Window>
Další informace najdete v části o definování a odkazování na prostředek WPF.
Vlastní ovládací prvky
I když WPF poskytuje řadu podpory přizpůsobení, můžete narazit na situace, kdy stávající ovládací prvky WPF nevyhovují potřebám vaší aplikace nebo jejích uživatelů. K tomu může dojít v těchto případech:
- Uživatelské rozhraní, které požadujete, nelze vytvořit přizpůsobením vzhledu a chování existujících implementací WPF.
- Chování, které potřebujete, se nepodporuje (nebo jeho podpora není snadná) v existujících implementacích WPF.
V tomto okamžiku ale můžete využít jeden ze tří modelů WPF k vytvoření nového ovládacího prvku. Každý model cílí na konkrétní scénář a vyžaduje, aby váš vlastní ovládací prvek byl odvozen z konkrétní základní třídy WPF. Tady jsou uvedené tři modely:
Model uživatelského ovládacího prvku
Vlastní ovládací prvek je odvozen od UserControl a skládá se z jednoho nebo více jiných ovládacích prvků.Řídicí model Vlastní ovládací prvek je odvozený z Control a používá se k vytváření implementací, které pomocí šablon oddělují chování od vzhledu, podobně jako většina ovládacích prvků WPF. Odvozování z Control umožňuje větší volnost při vytváření vlastního uživatelského rozhraní než uživatelských ovládacích prvků, ale může to vyžadovat větší úsilí.
Model elementů architektury.
Vlastní ovládací prvek je odvozen od FrameworkElement, pokud je jeho vzhled definován vlastní logikou vykreslování (nikoli šablonami).
Další informace o vlastních ovládacích prvcích najdete v tématu Přehled vytváření ovládacích prvků.
Viz také
- Kurz: Vytvoření nové aplikace WPF
- Migrace aplikace WPF do .NET
- Přehled oken WPF
- Přehled datových vazeb
- Přehled XAML:
.NET Desktop feedback