x:Static — Rozszerzenie znaczników

Odwołuje się do dowolnej statycznej jednostki kodu typu "wartość", która jest zdefiniowana w sposób zgodny ze specyfikacją języka wspólnego (CLS). Przywoływana właściwość statyczna może służyć do podawania 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 odwołujący się do zamapowanego, innego niż domyślna przestrzeń nazw XAML. prefix jest wyświetlany 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 element członkowski.
staticMemberName Wymagane. Nazwa żądanego elementu członkowskiego wartości statycznej (stała, właściwość statyczna, pole lub wartość wyliczenia).

Uwagi

Jednostka kodu, do której odwołuje się odwołanie, musi być jedną z następujących czynności:

  • Stała
  • Właściwość statyczna
  • Pole
  • Wartość wyliczenia

Określenie dowolnej innej jednostki kodu, takiej jak właściwość niestatyczna, powoduje błąd czasu kompilacji, jeśli kod XAML jest skompilowany, lub wyjątek analizy czasu ładowania XAML.

Odwołania do 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 x:Static wymaga to mapowania prefiksów. Przestrzenie nazw XAML są prawie zawsze definiowane w elemercie głównym dokumentu XAML.

Operacje wyszukiwania dla właściwości statycznych mogą być wykonywane przez usługi XAML platformy .NET i jego czytniki XAML oraz składniki zapisywania XAML, gdy są one uruchamiane z domyślnym kontekstem schematu XAML. Ten kontekst schematu XAML może używać odbicia CLR w celu zapewnienia niezbędnych wartości statycznych do budowy grafu obiektów. Określona typeName nazwa jest w rzeczywistości nazwą typu XAML, a nie nazwą typu CLR, chociaż są one zasadniczo takie same w przypadku korzystania z domyślnego kontekstu schematu XAML lub w przypadku używania wszystkich istniejących struktur implementowania XAML opartych na clR.

Należy zachować ostrożność podczas tworzenia x:Static odwołań, które nie są bezpośrednio typem wartości właściwości. W sekwencji przetwarzania XAML podane wartości z rozszerzenia znaczników nie wywołują konwersji dodatkowej wartości. Jest to prawdą, nawet jeśli x:Static 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 określonego elementu członkowskiego lub dla dowolnych wartości członkowskich typu zwracanego.

Składnią atrybutu jest składnia najczęściej używana z tym rozszerzeniem znacznika. Token ciągu podany po przypisaniu ciągu identyfikatora x:Static jako Member wartości podstawowej StaticExtension klasy rozszerzenia.

Istnieją dwa inne użycia XAML, które są technicznie możliwe. Jednak te zastosowania są mniej powszechne, ponieważ nie są one niepotrzebnie pełne:

  1. Składnia elementu obiektu.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. Składnia atrybutu z jawną właściwością elementu członkowskiego dla ciągu inicjowania.

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

W implementacji usług XAML platformy .NET obsługa tego rozszerzenia znaczników jest definiowana przez klasę StaticExtension .

x:Static to rozszerzenie znaczników. Wszystkie rozszerzenia znaczników w języku XAML używają { znaków i } w ich składni atrybutu, która jest konwencją, za pomocą której procesor XAML rozpoznaje, że rozszerzenie znaczników musi podać wartość. Aby uzyskać więcej informacji na temat rozszerzeń znaczników, zobacz Markup Extensions for XAML Overview (Rozszerzenia znaczników dla języka XAML — omówienie).

Uwagi dotyczące użycia platformy WPF

Domyślna przestrzeń nazw XAML używana do programowania WPF nie zawiera wielu przydatnych właściwości statycznych, a większość przydatnych właściwości statycznych obsługuje takie jak konwertery typów, które ułatwiają korzystanie bez konieczności {x:Static} . W przypadku właściwości statycznych należy zamapować prefiks dla przestrzeni nazw XAML, jeśli jest spełniony jeden z następujących warunków:

  • 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ść typowy scenariusz użycia programu x:Static. Na przykład można użyć x:Static odwołania z mapowaniem przestrzeni nazw XAML do System przestrzeni nazw CLR i zestawu mscorlib, aby odwołać się do właściwości Environment statycznych 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 jako część domyślnej przestrzeni nazw XAML WPF. Mapowanie przestrzeni nazw CLR na domyślną przestrzeń nazw XAML dla WPF jest wykonywane przez definicje w różnych zestawach WPF (aby uzyskać więcej informacji na temat tej koncepcji, zobacz Przestrzenie nazw XAML XAML i Mapowanie przestrzeni nazw dla WPF XAML). Niemapowane przestrzenie nazw CLR mogą istnieć, jeśli przestrzeń nazw CLR składa się głównie z definicji klas, które nie są zwykle przeznaczone dla XAML, takich jak System.Windows.Threading.

Aby uzyskać więcej informacji na temat używania prefiksów i przestrzeni nazw XAML dla WPF, zobacz Przestrzenie nazw XAML i Mapowanie przestrzeni nazw dla WPF XAML.

Zobacz też