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á:

  1. Syntaxe elementu objektu.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. 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žít x: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é