Dela via


x:Static Markup Extension

Refererar till alla statiska eftervärdeskodentiteter som definieras på ett gemensamt språkspecifikation (CLS)-kompatibelt sätt. Den statiska egenskap som refereras kan användas för att ange värdet för en egenskap i XAML.

XAML-attributanvändning

<object property="{x:Static prefix:typeName.staticMemberName}" .../>

XAML-värden

Värde Beskrivning
prefix Valfri. Ett prefix som refererar till ett mappat XAML-namnområde som inte är standard. prefix visas uttryckligen i användningen eftersom du sällan refererar till statiska egenskaper som kommer från ett XAML-standardnamnområde. Se Kommentarer.
typeName Krävs. Namnet på den typ som definierar den önskade statiska medlemmen.
staticMemberName Krävs. Namnet på den önskade statiska värdemedlemmen (en konstant, en statisk egenskap, ett fält eller ett uppräkningsvärde).

Anmärkningar

Kodentiteten som refereras måste vara något av följande:

  • En konstant
  • En statisk egenskap
  • Ett fält
  • Ett uppräkningsvärde

Om du anger en annan kodentitet, till exempel en icke-statisk egenskap, uppstår ett kompileringsfel om XAML är kompilerad eller ett XAML-undantag för belastningsparse.

Du kan göra x:Static referenser till statiska fält eller egenskaper som inte finns i XAML-standardnamnområdet för det aktuella XAML-dokumentet. Detta kräver dock en prefixmappning. XAML-namnområden definieras nästan alltid på rotelementet i XAML-dokumentet.

Uppslagsåtgärderna för statiska egenskaper kan utföras av .NET XAML Services och dess XAML-läsare och XAML-skrivare när de körs med XAML-standardschemakontexten. Den här XAML-schemakontexten kan använda CLR-reflektion för att tillhandahålla nödvändiga statiska värden för objektgrafkonstruktion. Det typeName du anger är i själva verket ett XAML-typnamn, inte ett CLR-typnamn, även om dessa i stort sett är samma namn när du använder XAML-standardschemakontexten eller när du använder alla befintliga CLR-baserade XAML-implementeringsramverk.

Var försiktig när du gör x:Static referenser som inte direkt är typen av en egenskaps värde. I XAML-bearbetningssekvensen anropar angivna värden från ett markeringstillägg inte ytterligare värdekonvertering. Detta gäller även om din x:Static referens skapar en textsträng och en värdekonvertering för attributvärden baserat på textsträngen vanligtvis sker antingen för den specifika medlemmen eller för medlemsvärden av returtypen.

Attributsyntax är den vanligaste syntaxen som används med det här markeringstillägget. Strängtoken som anges efter att x:Static identifierarsträngen har tilldelats som Member-värdet för den underliggande StaticExtension-tilläggsklassen.

Det finns två andra XAML-användningar som är tekniskt möjliga. Dessa användningar är dock mindre vanliga eftersom de är onödigt utförliga:

  1. Syntax för objektelement.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. Attributsyntax med explicit medlemsegenskap för initieringssträng.

    <object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
    

I implementeringen av .NET XAML Services definieras hanteringen för det här påläggstillägget av klassen StaticExtension.

x:Static är ett tillägg för markering. Alla markeringstillägg i XAML använder { och } tecken i attributsyntaxen, vilket är den konvention som en XAML-processor identifierar att ett markeringstillägg måste ange ett värde. Mer information om markeringstillägg finns i Markup Extensions for XAML Overview.

WPF-användningsanteckningar

Standard-XAML-namnområdet som du använder för WPF-programmering innehåller inte många användbara statiska egenskaper, och de flesta av de användbara statiska egenskaperna har stöd, till exempel typkonverterare som underlättar användningen utan {x:Static} . För statiska egenskaper måste du mappa ett prefix för ett XAML-namnområde om något av följande är sant:

  • Du refererar till en typ som finns i WPF men som inte ingår i XAML-standardnamnområdet för WPF (http://schemas.microsoft.com/winfx/2006/xaml/presentation). Det här är ett ganska vanligt scenario för att använda x:Static. Du kan till exempel använda en x:Static referens med en XAML-namnområdesmappning till System CLR-namnområde och mscorlib-sammansättning för att referera till de statiska egenskaperna för klassen Environment.

  • Du refererar till en typ från en anpassad sammansättning.

  • Du refererar till en typ som finns i en WPF-sammansättning, men den typen finns inom ett CLR-namnområde som inte har mappats som en del av WPF-standard-XAML-namnområdet. Mappningen av CLR-namnområden till standard-XAML-namnområdet för WPF utförs av definitioner i de olika WPF-sammansättningarna (mer information om det här begreppet finns i XAML-namnområden och namnområdesmappning för WPF XAML-). Icke-mappade CLR-namnområden kan finnas om clr-namnområdet huvudsakligen består av klassdefinitioner som vanligtvis inte är avsedda för XAML, till exempel System.Windows.Threading.

Mer information om hur du använder prefix och XAML-namnområden för WPF finns i XAML-namnområden och namnområdesmappning för WPF XAML-.

Se även