x:Static — Rozszerzenie znaczników
Odwołuje się do dowolnej statycznej jednostki kodu według wartości zdefiniowanej w sposób zgodny Common Language Specification (CLS). Właściwość statyczna, do których odwołuje się odwołanie, może służyć do zapewnienia wartości właściwości w języku XAML.
Użycie atrybutu języka XAML
<object property="{x:Static prefix:typeName.staticMemberName}" .../>
Wartości XAML
| Wartość | Opis |
|---|---|
prefix |
Opcjonalny. Prefiks, który odwołuje się do zamapowanych, innych niż domyślna przestrzeń nazw XAML. prefix Wartość jest wyświetlana jawnie w użyciu, ponieważ rzadko odwołujesz się do właściwości statycznych, które pochodzą z domyślnej przestrzeni nazw XAML. Zobacz uwagi. |
typeName |
Wymagane. Nazwa typu, który definiuje żądany statyczny członek. |
staticMemberName |
Wymagane. Nazwa żądanego statycznego członka wartości (stałej, właściwości statycznej, pola lub wartości wyliczenia). |
Uwagi
Jednostka kodu, do których się odwołujesz, musi być jedną z następujących:
- Stała
- Właściwość statyczna
- Pole
- Wartość wyliczenia
Określenie innej jednostki kodu, takiej jak właściwość niestatyczna, powoduje błąd czasu kompilacji, jeśli kod XAML jest kompilowany, lub wyjątek analizy czasu ładowania XAML.
Można odwołań do x:Static pól statycznych lub właściwości, które nie znajdują się w domyślnej przestrzeni nazw XAML dla bieżącego dokumentu XAML, jednak wymaga to mapowania prefiksów. Przestrzenie nazw XAML są prawie zawsze definiowane w elemencie głównym dokumentu XAML.
Operacje wyszukiwania właściwości statycznych mogą być wykonywane przez usługi XAML .NET i ich czytniki XAML oraz autorzy kodu XAML, gdy są one uruchomione z domyślnym kontekstem schematu XAML. Ten kontekst schematu XAML może używać odbicia CLR w celu zapewnienia niezbędnych wartości statycznych dla konstrukcji grafu obiektu. typeName Określony element jest w rzeczywistości nazwą typu XAML, a nie nazwą typu CLR, chociaż są one zasadniczo takie same podczas korzystania z domyślnego kontekstu schematu XAML lub w przypadku korzystania ze wszystkich istniejących platform implementowania języka XAML opartych na języku CLR.
Podczas stosowania odwołań x:Static , które nie są bezpośrednio typem wartości właściwości, należy zachować ostrożność. W sekwencji przetwarzania XAML podane wartości z rozszerzenia znaczników nie wywołują konwersji wartości dodatkowej. Dzieje się x:Static tak nawet wtedy, gdy odwołanie tworzy ciąg tekstowy, a konwersja wartości dla wartości atrybutów na podstawie ciągu tekstowego zwykle występuje dla tego konkretnego członka lub dla wszystkich wartości członkowskich zwracanego typu.
Składnią atrybutu jest składnia najczęściej używana z tym rozszerzeniem znacznika. Token ciągu podany po ciągu x:Static identyfikatora jest przypisywany Member jako wartość bazowej klasy StaticExtension rozszerzenia.
Istnieją dwa inne zastosowania XAML, które są technicznie możliwe. Jednak te zastosowania są rzadziej spotykane, ponieważ są niepotrzebnie pełne:
Składnia elementu obiektu.
<x:Static Member="prefix:typeName.staticMemberName" ... />Składnia atrybutów z jawną właściwością Member dla ciągu inicjowania.
<object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
W implementacji usług XAML .NET obsługa tego rozszerzenia znaczników jest definiowana przez klasę StaticExtension .
x:Static jest rozszerzeniem znaczników. Wszystkie rozszerzenia znaczników w języku XAML { używają znaków i } w składni atrybutów, czyli konwencji, w której procesor XAML rozpoznaje, że rozszerzenie znaczników musi podać wartość. Aby uzyskać więcej informacji na temat rozszerzeń znaczników, zobacz Rozszerzenia znaczników dla języka XAML — omówienie.
Uwagi dotyczące użycia WPF
Domyślna przestrzeń nazw XAML, która jest przydatna do programowania WPF, nie zawiera wielu przydatnych właściwości statycznych, a większość przydatnych właściwości statycznych ma obsługę, taką jak konwertery typów, które ułatwiają użycie bez konieczności stosowania {x:Static} . W przypadku właściwości statycznych należy zmapować prefiks przestrzeni nazw XAML, jeśli jest spełnione jedno z następujących:
Odwołujesz się do typu, który istnieje w WPF, ale nie jest częścią domyślnej przestrzeni nazw XAML dla WPF (
http://schemas.microsoft.com/winfx/2006/xaml/presentation). Jest to dość powszechny scenariusz użycia programux:Static. Na przykład można użyć odwołania z mapowaniemx:Staticprzestrzeni nazw XAML System na przestrzeń nazw CLR i zestaw mscorlib w celu odwołania się do statycznych właściwości Environment klasy.Odwołujesz się do typu z zestawu niestandardowego.
Odwołujesz się do typu, który istnieje w zestawie WPF, ale ten typ znajduje się w przestrzeni nazw CLR, która nie została zamapowana na część domyślnej przestrzeni nazw XAML WPF. Mapowanie przestrzeni nazw CLR do domyślnej przestrzeni nazw XAML dla WPF jest wykonywane przez definicje w różnych zestawach WPF (aby uzyskać więcej informacji na temat tej koncepcji, zobacz Obszary nazw XAML i Mapowanie przestrzeni nazw dla WPF XAML). Niemapowane przestrzenie nazw CLR mogą istnieć, jeśli ta przestrzeń nazw CLR składa się głównie z definicji klas, które nie są zwykle przeznaczone dla języka XAML, takich jak System.Windows.Threading.
Aby uzyskać więcej informacji na temat używania prefiksów i przestrzeni nazw XAML dla WPF, zobacz Xaml Namespaces and Namespace Mapping for WPF XAML (Przestrzenie nazw XAML i mapowanie przestrzeni nazw dla WPF XAML).