x:Static Markup Extension
Odkazuje na jakoukoli statickou entitu kódu podle hodnoty, která je definována způsobem kompatibilním se specifikací CLS (Common Language Specification). Statickou vlastnost, na kterou odkazujete, lze použít k zadání hodnoty vlastnosti v jazyce XAML.
Použití atributu XAML
<object property="{x:Static prefix:typeName.staticMemberName}" .../>
Hodnoty XAML
Hodnota | Popis |
---|---|
prefix |
Volitelný. Předpona odkazující na mapovaný, ne výchozí obor názvů XAML.
prefix se v použití zobrazuje explicitně, protože zřídka odkazujete na statické vlastnosti, které pocházejí z výchozího oboru názvů XAML. Viz poznámky. |
typeName |
Požadovaný. Název typu, který definuje požadovaný statický člen. |
staticMemberName |
Požadovaný. Název požadovaného členu statické hodnoty (konstanta, statická vlastnost, pole nebo hodnota výčtu). |
Poznámky
Odkazovaná entita kódu musí být jedna z následujících:
- Konstanta
- Statická vlastnost
- Pole
- Hodnota výčtu
Určení jakékoli jiné entity kódu, například nestatické vlastnosti, způsobí chybu v době kompilace, pokud je xaml zkompilován nebo výjimka analýzy času načítání XAML.
Můžete vytvořit x:Static
odkazy na statická pole nebo vlastnosti, které nejsou ve výchozím oboru názvů XAML pro aktuální dokument XAML; to však vyžaduje mapování předpon. Obory názvů XAML jsou téměř vždy definovány v kořenovém prvku dokumentu XAML.
Vyhledávací operace statických vlastností můžou provádět služby .NET XAML Services a jeho čtečky XAML a zapisovače XAML při jejich spuštění s výchozím kontextem schématu XAML. Tento kontext schématu XAML může použít reflexi CLR k poskytnutí nezbytných statických hodnot pro vytváření grafů objektů. Zadaný typeName
je ve skutečnosti název typu XAML, nikoli název typu CLR, i když se jedná v podstatě o stejný název při použití výchozího kontextu schématu XAML nebo při použití všech existujících architektur implementace XAML založených na CLR.
Při vytváření x:Static
odkazů, které nejsou přímo typem hodnoty vlastnosti, buďte opatrní. V sekvenci zpracování XAML zadané hodnoty z rozšíření značek nevyvolají další převod hodnoty. To platí i v případě, že odkaz x:Static
vytvoří textový řetězec a hodnota pro hodnoty atributů na základě textového řetězce se obvykle vyskytuje buď pro konkrétního člena, nebo pro všechny hodnoty členů návratového typu.
Syntaxe atributu je nejběžnější syntaxe použitá s tímto rozšířením značek. Řetězcový token poskytnutý za řetězcem identifikátoru x:Static
je přiřazen jako Member hodnota podkladové třídy rozšíření StaticExtension.
Technicky možné jsou dvě další použití XAML. Tato použití jsou ale méně běžná, protože jsou zbytečně podrobná:
Syntaxe elementu objektu.
<x:Static Member="prefix:typeName.staticMemberName" ... />
Syntaxe atributu s explicitní vlastností Člen pro inicializační řetězec.
<object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
V implementaci .NET XAML Services je zpracování tohoto rozšíření značek definováno StaticExtension třídy.
x:Static
je rozšíření značek. Všechna rozšíření značek v XAML používají {
a }
znaky v syntaxi atributů, což je konvence, kterou procesor XAML rozpozná, že rozšíření značek musí poskytnout hodnotu. Další informace o rozšíření značek naleznete v tématu Rozšíření značek pro XAML Přehled.
Poznámky k využití WPF
Výchozí obor názvů XAML, který používáte pro programování WPF, neobsahuje mnoho užitečných statických vlastností a většina užitečných statických vlastností má podporu, jako jsou převaděče typů, které usnadňují použití bez nutnosti {x:Static}
. U statických vlastností je nutné namapovat předponu oboru názvů XAML, pokud platí jedna z následujících možností:
Odkazujete na typ, který existuje ve WPF, ale není součástí výchozího oboru názvů XAML pro WPF (
http://schemas.microsoft.com/winfx/2006/xaml/presentation
). Jedná se o poměrně běžný scénář použitíx:Static
. Můžete například použít odkazx:Static
s mapováním oboru názvů XAML na System CLR obor názvů a sestavení mscorlib, aby bylo možné odkazovat na statické vlastnosti Environment třídy.Odkazujete na typ z vlastního sestavení.
Odkazujete na typ, který existuje v sestavení WPF, ale tento typ je v oboru názvů CLR, který nebyl namapován jako součást výchozího oboru názvů XAML WPF. Mapování oborů názvů CLR na výchozí obor názvů XAML pro WPF se provádí definicemi v různých sestaveních WPF (další informace o tomto konceptu najdete v tématu Obory názvů XAML a mapování oboru názvů pro WPF XAML). Nemapované obory názvů CLR mohou existovat, pokud se tento obor názvů CLR skládá převážně z definic tříd, které nejsou obvykle určeny pro XAML, například System.Windows.Threading.
Další informace o použití předpon a oborů názvů XAML pro WPF naleznete v tématu obory názvů XAML a mapování oboru názvů pro WPF XAML.
Viz také
- rozšíření značek x:Type
- typy migrované z WPF do System.Xaml
.NET Desktop feedback