Sdílet prostřednictvím


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

  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 .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 odkaz x: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é