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:
lubusing:
— 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.