x:Static – rozšíření značek
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 |
Nepovinné. Předpona odkazující na mapovaný, ne výchozí obor názvů XAML. prefix zobrazuje se explicitně v použití, protože zřídka odkazujete na statické vlastnosti, které pocházejí z výchozího oboru názvů XAML. Viz poznámky. |
typeName |
Povinný: Název typu, který definuje požadovaný statický člen. |
staticMemberName |
Povinný: 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.
Odkazy x:Static
na statická pole nebo vlastnosti, které nejsou ve výchozím oboru názvů XAML pro aktuální dokument XAML, ale 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
název 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 implementačních architektur 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 k převodu hodnot atributů na základě textového řetězce obvykle dochází buď pro konkrétního člena, nebo pro všechny hodnoty členů návratového typu.
Nejčastějším typem syntaxe, která se používá u tohoto rozšíření značek, je syntaxe atributu. Řetězcový token poskytnutý po řetězci identifikátoru x:Static
je přiřazen jako Member hodnota podkladové StaticExtension třídy rozšíření.
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 služby .NET XAML Services je zpracování pro toto rozšíření značek definováno StaticExtension třídou.
x:Static
je rozšíření značek. Všechna rozšíření značek v XAML používají {
v syntaxi atributů a }
znaky, což je konvence, kterou procesor XAML rozpozná, že rozšíření značek musí poskytnout hodnotu. Další informace o rozšířeních značek naleznete v tématu Rozšíření značek pro PŘEHLED XAML.
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žítx:Static
odkaz s mapováním oboru názvů XAML na System obor názvů CLR a sestavení mscorlib k odkazování 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 do výchozího oboru názvů XAML pro WPF se provádí definicemi v různých sestaveních WPF (další informace o tomto konceptu naleznete 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 tom, jak používat předpony a obory názvů XAML pro WPF, naleznete v tématu Obory názvů XAML a mapování oborů názvů pro WPF XAML.
Viz také
.NET Desktop feedback