x:Static Markup Extension
Verwijst naar een statische by-value code-entiteit die is gedefinieerd op een cls-compatibele manier (Common Language Specification). De statische eigenschap waarnaar wordt verwezen, kan worden gebruikt om de waarde van een eigenschap in XAML op te geven.
XAML-kenmerkgebruik
<object property="{x:Static prefix:typeName.staticMemberName}" .../>
XAML-waarden
Waarde | Beschrijving |
---|---|
prefix |
Facultatief. Een voorvoegsel dat verwijst naar een toegewezen, niet-standaard XAML-naamruimte.
prefix expliciet wordt weergegeven in het gebruik, omdat u zelden verwijst naar statische eigenschappen die afkomstig zijn van een standaard XAML-naamruimte. Zie opmerkingen. |
typeName |
Vereist. De naam van het type dat het gewenste statische lid definieert. |
staticMemberName |
Vereist. De naam van het gewenste statische-waardelid (een constante, een statische eigenschap, een veld of een opsommingswaarde). |
Opmerkingen
De code-entiteit waarnaar wordt verwezen, moet een van de volgende zijn:
- Een constante
- Een statische eigenschap
- Een veld
- Een opsommingswaarde
Het opgeven van een andere code-entiteit, zoals een niet-statische eigenschap, veroorzaakt een compilatiefout als de XAML is gecompileerd, of een XAML-belastingstijdparse-uitzondering.
U kunt x:Static
verwijzingen maken naar statische velden of eigenschappen die zich niet in de standaard XAML-naamruimte bevinden voor het huidige XAML-document; Hiervoor is echter een voorvoegseltoewijzing vereist. XAML-naamruimten zijn bijna altijd gedefinieerd op het hoofdelement van het XAML-document.
De opzoekbewerkingen voor statische eigenschappen kunnen worden uitgevoerd door .NET XAML Services en de XAML-lezers en XAML-schrijvers wanneer ze worden uitgevoerd met de standaard-XAML-schemacontext. Deze XAML-schemacontext kan CLR-reflectie gebruiken om de benodigde statische waarden voor objectgrafiekconstructie te bieden. De typeName
die u opgeeft, is eigenlijk een XAML-typenaam, niet een CLR-typenaam, hoewel dit in feite dezelfde naam is wanneer u de standaard XAML-schemacontext gebruikt of bij het gebruik van alle bestaande XAML-frameworks die op CLR zijn gebaseerd.
Wees voorzichtig wanneer u x:Static
verwijzingen maakt die niet rechtstreeks het type van de waarde van een eigenschap zijn. In de XAML-verwerkingsreeks roepen opgegeven waarden uit een markeringsextensie geen extra waardeconversie aan. Dit geldt zelfs als uw x:Static
verwijzing een teksttekenreeks maakt en een waardeconversie voor kenmerkwaarden op basis van een tekenreeks gebeurt meestal voor dat specifieke lid of voor lidwaarden van het retourtype.
Kenmerksyntaxis is de meest voorkomende syntaxis die wordt gebruikt met deze markeringsextensie. Het tekenreekstoken dat is opgegeven nadat de x:Static
id-tekenreeks is toegewezen als de Member waarde van de onderliggende StaticExtension-extensieklasse.
Er zijn twee andere XAML-gebruiksmogelijkheden die technisch mogelijk zijn. Deze gebruiksrechten komen echter minder vaak voor omdat ze onnodig uitgebreid zijn:
Syntaxis van objectelement.
<x:Static Member="prefix:typeName.staticMemberName" ... />
Kenmerksyntaxis met expliciete lideigenschap voor initialisatietekenreeks.
<object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
In de implementatie van .NET XAML Services wordt de verwerking voor deze markeringsextensie gedefinieerd door de StaticExtension-klasse.
x:Static
is een markeringsextensie. Alle markeringsextensies in XAML gebruiken de {
en }
tekens in hun kenmerksyntaxis. Dit is de conventie waarmee een XAML-processor herkent dat een markeringsextensie een waarde moet opgeven. Zie Markup Extensions for XAML Overviewvoor meer informatie over markeringsextensies.
Opmerkingen bij WPF-gebruik
De standaard XAML-naamruimte die u gebruikt voor WPF-programmering bevat niet veel nuttige statische eigenschappen en de meeste van de nuttige statische eigenschappen hebben ondersteuning zoals typeconversieprogramma's die het gebruik vergemakkelijken zonder dat {x:Static}
. Voor statische eigenschappen moet u een voorvoegsel toewijzen voor een XAML-naamruimte als een van de volgende waarden waar is:
U verwijst naar een type dat bestaat in WPF, maar maakt geen deel uit van de standaard XAML-naamruimte voor WPF (
http://schemas.microsoft.com/winfx/2006/xaml/presentation
). Dit is een vrij gebruikelijk scenario voor het gebruik vanx:Static
. U kunt bijvoorbeeld eenx:Static
verwijzing gebruiken met een XAML-naamruimtetoewijzing aan de System CLR-naamruimte en mscorlib-assembly om te verwijzen naar de statische eigenschappen van de Environment-klasse.U verwijst naar een type uit een aangepaste assembly.
U verwijst naar een type dat bestaat in een WPF-assembly, maar dat type bevindt zich in een CLR-naamruimte die niet is toegewezen als onderdeel van de standaardnaamruimte WPF XAML. De toewijzing van CLR-naamruimten in de standaard XAML-naamruimte voor WPF wordt uitgevoerd met definities in de verschillende WPF-assembly's (zie XAML-naamruimten en naamruimtetoewijzing voor WPF XAML). Niet-toegewezen CLR-naamruimten kunnen bestaan als die CLR-naamruimte voornamelijk bestaat uit klassedefinities die doorgaans niet zijn bedoeld voor XAML, zoals System.Windows.Threading.
Zie voor meer informatie over het gebruik van voorvoegsels en XAML-naamruimten voor WPF XAML-naamruimten en naamruimtetoewijzing voor WPF XAML-.
Zie ook
.NET Desktop feedback