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.
XAML (Extensible Application Markup Language) je deklarativní jazyk revizí používaný k definování uživatelského rozhraní v aplikacích WinUI. Popisujete strukturu a vlastnosti uživatelského rozhraní v souborech .xaml a logiku a události zpracováváte ve spárovaném souboru kódu na pozadí.
Poznámka:
C# a C++/WinRT jsou podporovány pro aplikace WinUI 3 / Windows App SDK i UPW. C++/CX se vztahuje jenom na UPW a není podporován pro WinUI 3.
Co je XAML?
XAML je jazyk založený na jazyce XML pro vytváření objektů a nastavení jejich vlastností. Prvky uživatelského rozhraní – tlačítka, textová pole, rozvržení – deklarujete ve značkování a pomocí souboru code-behind reagujete na události a za běhu aplikace tyto prvky upravujete.
Vzhledem k tomu, že XAML je formát výměny založený na textu, můžou návrháři a vývojáři pracovat nezávisle: návrháři vytvoří vizuální strukturu v XAML, vývojáři vytvoří logiku v kódu za sebou a oba můžou iterovat, aniž by navzájem blokovali.
Základní syntaxe XAML
Všechny platné XAML jsou také platné XML, ale XAML přidává své vlastní koncepty navrchu. Například syntaxe elementu vlastnosti umožňuje nastavit vlastnost jako vnořený xml element místo řetězce atributu – platný XML, ale s dodatečným významem v XAML.
Úplné podrobnosti o syntaxi najdete v průvodci syntaxí XAML.
XAML a Visual Studio
Editor XAML sady Visual Studio poskytuje IntelliSense, automatické dokončování a vizuální návrhovou plochu. Chyby se zobrazují přímo v kódu jako vlnovky ještě před kompilací. Nemusíte si pamatovat každé pravidlo syntaxe – nechte vás vést integrovaným vývojovém prostředím.
Obory názvů XAML
Každý soubor XAML deklaruje obory názvů v kořenovém elementu. Typická stránka WinUI začíná dvěma:
<Page
x:Class="Application1.BlankPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
-
Výchozí obor názvů (
xmlns=): Obsahuje všechny integrované ovládací prvky WinUI, text, grafiku, datové vazby a typy stylů. Většina vašeho XAML používá tento obor názvů bez předpony. -
Obor názvů jazyka XAML (
xmlns:x=): Namapovaný na předponux:poskytuje základní jazykové funkce.
Jmenný x: prostor
| Vlastnost | Purpose |
|---|---|
| x:Key | Jedinečný klíč zdroje v ResourceDictionary |
| x:Class | Propojuje soubor XAML s třídou code-behind |
| x:Name | Přiřadí prvku název za běhu, aby na něj mohl odkazovat code-behind. |
| x:Uid | Označí prvky pro nahrazení lokalizovanými zdroji. |
| Vnitřní typy XAML | Vyjadřuje jednoduché hodnoty (například x:Boolean) jako elementy objektu. |
Mapování vlastních typů
Pokud chcete v XAML použít vlastní typy nebo typy knihoven třetích stran, deklarujte předponu oboru názvů, která se mapuje na obor názvů kódu:
xmlns:myTypes="using:myCompany.myTypes"
Pak na tyto typy odkazujte s předponou:
<myTypes:CustomButton/>
Podrobnosti, včetně aspektů C++/CX, najdete v tématu Obory názvů XAML a mapování oboru názvů.
Obory názvů návrháře a kompatibility
V XAML generovaném nástroji často uvidíte předpony d: (návrhář) a mc: (kompatibilita značkování). Slouží k podpoře nástrojů pro návrh a za běhu je lze bezpečně ignorovat. Podrobnosti najdete v tématu Další obory názvů XAML.
Rozšíření označení
Rozšíření značek umožňují nastavit vlastnost na něco, co nelze vyjádřit jako prostý řetězec – například odkaz na sdílený prostředek nebo datovou vazbu. Používají syntaxi se složenými závorkami:
<Button Style="{StaticResource SearchButtonStyle}"/>
Bez {StaticResource} byste k přiřazení Style museli použít rozvláčnou syntaxi elementu vlastnosti. Rozšíření značek udržují XAML stručný.
prostředí Windows Runtime XAML podporuje následující rozšíření značek:
| Extension | Purpose |
|---|---|
| {x:Bind} | Datová vazba v době kompilace (nejlepší výkon) |
| {Binding} | Datová vazba modulu runtime |
| {StaticResource} | Odkazovat na položku ResourceDictionary pomocí klíče |
| {ThemeResource} | Stejně jako {StaticResource}, ale aktualizuje se při změně motivu aplikace. |
| {TemplateBinding} | Vytvořit vazbu na vlastnost nadřazeného prvku šablony ovládacího prvku |
| {RelativeSource} | Vázat relativně k rodiči definovanému šablonou |
| {CustomResource} | Rozšířené vyhledávání vlastních zdrojů |
| {x:Null} | Explicitní nastavení hodnoty nullable na null |
Rozšíření značek lze vnořit; nejvnitřnější se vyhodnocuje jako první.
Events
Připojte obslužné rutiny událostí v XAML zadáním události jako atributu a názvu metody obslužné rutiny jako její hodnoty:
<Button Click="showUpdatesButton_Click">Show updates</Button>
Kompilátor očekává odpovídající metodu v souboru code-behind se správným podpisem delegáta:
private void showUpdatesButton_Click(object sender, RoutedEventArgs e)
{
// your code
}
void showUpdatesButton_Click(Windows::Foundation::IInspectable const&, Microsoft::UI::Xaml::RoutedEventArgs const&);
Poznámka:
V jazyce C++/CX má každá stránka XAML dva soubory kódu: hlavičku (.xaml.h) a implementaci (.xaml.cpp).
Další informace najdete v tématu Události a přehled směrovaných událostí.
Slovníky prostředků
A ResourceDictionary ukládá opakovaně použitelné objekty – štětce, styly, šablony – identifikované uživatelem x:Key. Zdroje mohou být v oddílu zdrojů na stránce nebo v samostatném souboru .xaml. Úplné vysvětlení naleznete v tématu ResourceDictionary a odkazy na prostředky v jazyce XAML.
XAML a XML
XAML je nadmnožina XML a je třeba o něm vědět několik věcí:
- Rozlišování velikosti písmen: Názvy elementů a atributů musí se přesně shodovat.
-
xml:lang: Platné v jazyce XAML, ale odpovídá běhovému chování na úrovni architektury, nikoli chování při parsování. - Kódování: Podporují se pouze UTF-8 a UTF-16.
Názvové skopy XAML
Názvy přiřazené x:Name musí být v rámci oboru názvů jedinečné. Názvové obory jsou zvláště relevantní uvnitř šablon ovládacích prvků, kde názvy jsou vymezeny na šablonu, nikoli na stránku. Podrobnosti najdete v názvových rozsacích XAML.
Tipy týkající se výkonu
- Definujte často používané štětce jako prostředky
SolidColorBrushnamísto opakovaného uvádění barevných literálů. - Umístěte prostředky sdílené mezi stránkami do
Application.Resources; prostředky specifické pro danou stránku ponechte na této stránce. - Před vydáním odeberte nepoužívané zdroje (klíče bez referencí
{StaticResource}). - Vyhněte se přepisování šablon ovládacích prvků – výchozí šablony jsou již optimalizované z hlediska výkonu načítání.
- Používejte
Bordera rozložení kontejnerů namísto vícenásobného vykreslení stejného pixelu (překreslení). - Použijte výchozí šablony položek pro
ListViewaGridView; jejichPresenterlogika je vyladěna pro velké seznamy.
Další pokyny najdete v tématu Optimalizace kódu XAML.
Ladění XAML
V .xamlsouborech nemůžete nastavit body přerušení, ale Visual Studio poskytuje jinou nápovědu:
- V době návrhu: Vlnovky a značky chyb se při psaní zobrazují přímo v textu.
-
Runtime: Selhání při parsování vyvolají
XamlParseException(nebo podobnou strukturovanou výjimku v jazyce C++/CX) s informací o čísle řádku v souboru XAML.
Informace o zpracování chyb za běhu najdete v tématu Zpracování výjimek pro aplikace WinUI v jazyce C#. Pokud chcete spustit ladicí relaci, přečtěte si téma Spuštění ladicí relace.
Windows developer