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:

  1. Składnia elementu obiektu.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. 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 programu x:Static. Na przykład można użyć odwołania z mapowaniem x:Static przestrzeni 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).

Zobacz też