Udostępnij za pośrednictwem


Przestrzenie nazw XAML

Język XAML używa atrybutu xmlns XML dla deklaracji przestrzeni nazw. Istnieją dwie deklaracje przestrzeni nazw XAML, które są zawsze w elemecie głównym pliku XAML. Pierwsza definiuje domyślną przestrzeń nazw:

xmlns="http://schemas.microsoft.com/dotnet/2021/maui"

Domyślna przestrzeń nazw określa, że elementy zdefiniowane w pliku XAML bez prefiksu odnoszą się do klas interfejsu użytkownika aplikacji wieloplatformowych platformy .NET (.NET MAUI), takich jak ContentPage, Labeli Button.

Druga deklaracja przestrzeni nazw używa prefiksu x :

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

Język XAML używa prefiksów do deklarowania przestrzeni nazw innych niż domyślne z prefiksem używanym podczas odwoływania się do typów w przestrzeni nazw. Deklaracja x przestrzeni nazw określa, że elementy zdefiniowane w języku XAML z prefiksem x są używane dla elementów i atrybutów, które są wewnętrzne dla XAML (w szczególności specyfikacji XAML 2009).

W poniższej tabeli przedstawiono x konstrukcje obsługiwane przez program .NET MAUI:

Konstrukcja opis
x:Arguments Określa argumenty konstruktora dla konstruktora innego niż domyślny lub dla deklaracji obiektu metody fabryki.
x:Class Określa przestrzeń nazw i nazwę klasy dla klasy zdefiniowanej w języku XAML. Nazwa klasy musi być zgodna z nazwą klasy pliku za pomocą kodu. Należy pamiętać, że ta konstrukcja może być wyświetlana tylko w elemecie głównym pliku XAML.
x:ClassModifier Określa poziom dostępu dla wygenerowanej klasy w zestawie.
x:DataType Określa typ obiektu, z którego będzie powiązany element XAML i jego elementy podrzędne.
x:FactoryMethod Określa metodę fabryki, która może służyć do inicjowania obiektu.
x:FieldModifier Określa poziom dostępu dla wygenerowanych pól dla nazwanych elementów XAML.
x:Key Określa unikatowy klucz zdefiniowany przez użytkownika dla każdego zasobu w obiekcie ResourceDictionary. Wartość klucza służy do pobierania zasobu XAML i jest zwykle używana jako argument rozszerzenia StaticResource znaczników.
x:Name Określa nazwę obiektu środowiska uruchomieniowego dla elementu XAML. Ustawienie x:Name jest podobne do deklarowania zmiennej w kodzie.
x:TypeArguments Określa argumenty typu ogólnego konstruktora typu ogólnego.

Aby uzyskać więcej informacji na temat atrybutu x:ClassModifier , zobacz Modyfikatory klas. Aby uzyskać więcej informacji na temat atrybutu x:DataType , zobacz Skompilowane powiązania. Aby uzyskać więcej informacji o atrybucie x:FieldModifier , zobacz Modyfikatory pól. Aby uzyskać więcej informacji na temat x:Arguments atrybutów i x:FactoryMethod , zobacz Przekazywanie argumentów. Aby uzyskać więcej informacji o atrybucie x:TypeArguments , zobacz Generics (Typy ogólne).

Uwaga

Oprócz konstrukcji wymienionych powyżej program .NET MAUI zawiera również rozszerzenia znaczników, które mogą być używane za pomocą prefiksu x przestrzeni nazw. Aby uzyskać więcej informacji, zobacz Korzystanie z rozszerzeń znaczników XAML.

W języku XAML deklaracje przestrzeni nazw dziedziczą z elementu nadrzędnego na element podrzędny. W związku z tym podczas definiowania przestrzeni nazw w elemercie głównym pliku XAML wszystkie elementy w tym pliku dziedziczą deklarację przestrzeni nazw.

Deklarowanie przestrzeni nazw dla typów

Do typów można odwoływać się w języku XAML, deklarując przestrzeń nazw XAML z prefiksem, z deklaracją przestrzeni nazw określającą nazwę przestrzeni nazw środowiska uruchomieniowego języka wspólnego (CLR) i opcjonalnie nazwę zestawu. Jest to osiągane przez zdefiniowanie wartości dla następujących słów kluczowych w deklaracji przestrzeni nazw:

  • clr-namespace: lub using: — przestrzeń nazw CLR zadeklarowana w zestawie zawierającym typy, które mają być widoczne jako elementy XAML. To słowo kluczowe jest wymagane.
  • assembly= — zestaw zawierający przywołyną przestrzeń nazw CLR. Ta wartość jest nazwą zestawu bez rozszerzenia pliku. Ścieżka do zestawu powinna zostać ustanowiona jako odwołanie w projekcie zawierającym plik XAML, który będzie odwoływać się do zestawu. To słowo kluczowe można pominąć, jeśli wartość clr-namespace znajduje się w tym samym zestawie co kod aplikacji odwołujące się do typów.

Uwaga

Znak oddzielający clr-namespace token lub using od jego wartości jest dwukropkiem, natomiast znak oddzielający assembly token od jego wartości jest znakiem równości. Znak używany między dwoma tokenami jest średnikiem.

Poniższy przykład kodu przedstawia deklarację przestrzeni nazw XAML:

<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
  ...
</ContentPage>

Alternatywnie można to napisać jako:

<ContentPage ... xmlns:local="using:MyMauiApp">
  ...
</ContentPage>

Prefiks local jest konwencją służącą do wskazania, że typy w przestrzeni nazw są lokalne dla aplikacji. Alternatywnie, jeśli typy znajdują się w innym zestawie, nazwa zestawu powinna być również zdefiniowana w deklaracji przestrzeni nazw:

<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
  ...
</ContentPage>

Prefiks przestrzeni nazw jest następnie określany podczas deklarowania wystąpienia typu z zaimportowanej przestrzeni nazw:

<controls:Expander IsExpanded="True">
    ...
</controls:Expander>

Aby uzyskać informacje na temat definiowania niestandardowego schematu przestrzeni nazw, zobacz Niestandardowe schematy przestrzeni nazw.