Obory názvů XAML

XAML používá xmlns atribut XML pro deklarace oboru názvů. Existují dvě deklarace oboru názvů XAML, které jsou vždy v kořenovém prvku souboru XAML. První definuje výchozí obor názvů:

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

Výchozí obor názvů určuje, že prvky definované v souboru XAML bez předpony odkazují na třídy .NET Multi-Platform App UI (.NET MAUI), jako ContentPagejsou , a LabelButton.

Druhá deklarace oboru názvů používá předponu x :

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

XAML používá předpony k deklaraci jiných než výchozích oborů názvů s předponou používanou při odkazování na typy v rámci oboru názvů. Deklarace x oboru názvů určuje, že prvky definované v jazyce XAML s předponou x jsou používány pro elementy a atributy, které jsou vnitřní pro XAML (konkrétně specifikace XAML 2009).

Následující tabulka popisuje x konstrukce podporované rozhraním .NET MAUI:

Konstrukce Popis
x:Arguments Určuje argumenty konstruktoru pro jiný než výchozí konstruktor nebo pro deklaraci objektu metody továrny.
x:Class Určuje obor názvů a název třídy pro třídu definovanou v jazyce XAML. Název třídy se musí shodovat s názvem třídy souboru kódu za kódem. Všimněte si, že tento konstruktor se může objevit pouze v kořenovém prvku souboru XAML.
x:ClassModifier Určuje úroveň přístupu pro vygenerovanou třídu v sestavení.
x:DataType Určuje typ objektu, ke kterému se element XAML a jeho podřízené prvky vytvoří vazbu.
x:FactoryMethod Určuje metodu továrny, kterou lze použít k inicializaci objektu.
x:FieldModifier Určuje úroveň přístupu pro vygenerovaná pole pro pojmenované elementy XAML.
x:Key Určuje jedinečný uživatelsky definovaný klíč pro každý prostředek v objektu ResourceDictionary. Hodnota klíče se používá k načtení prostředku XAML a obvykle se používá jako argument pro StaticResource rozšíření značek.
x:Name Určuje název objektu modulu runtime pro element XAML. Nastavení x:Name je podobné deklarování proměnné v kódu.
x:TypeArguments Určuje argumenty obecného typu konstruktoru obecného typu.

Další informace o atributu x:ClassModifier naleznete v tématu Modifikátory tříd. Další informace o atributu x:DataType naleznete v tématu Kompilované vazby. Další informace o atributu x:FieldModifier naleznete v tématu Modifikátory pole. Další informace oatributch x:Argumentsx:FactoryMethod Další informace o atributu x:TypeArguments naleznete v tématu Obecné typy.

Poznámka:

Kromě výše uvedených konstruktorů obsahuje .NET MAUI také rozšíření značek, která je možné využívat prostřednictvím x předpony oboru názvů. Další informace naleznete v tématu Využití rozšíření značek XAML.

V jazyce XAML deklarace oboru názvů dědí z nadřazeného elementu do podřízeného elementu. Proto při definování oboru názvů v kořenovém prvku souboru XAML všechny elementy v daném souboru dědí deklaraci oboru názvů.

Deklarace oborů názvů pro typy

Typy lze odkazovat v jazyce XAML deklarací oboru názvů XAML s předponou, přičemž deklarace oboru názvů určuje název oboru názvů CLR (Common Language Runtime) a volitelně název sestavení. Toho dosáhnete definováním hodnot pro následující klíčová slova v deklaraci oboru názvů:

  • clr-namespace: nebo using: – obor názvů CLR deklarovaný v rámci sestavení, který obsahuje typy, které mají být vystaveny jako elementy XAML. Toto klíčové slovo je povinné.
  • assembly= – sestavení, které obsahuje odkazovaný obor názvů CLR. Tato hodnota je název sestavení bez přípony souboru. Cesta k sestavení by měla být vytvořena jako odkaz v projektu, který obsahuje soubor XAML, který bude odkazovat na sestavení. Toto klíčové slovo je možné vynechat, pokud je hodnota clr-namespace ve stejném sestavení jako kód aplikace odkazující na typy.

Poznámka:

Znak oddělující clr-namespace token od using jeho hodnoty je dvojtečka, zatímco znak oddělující assembly token od jeho hodnoty je znaménko rovná se. Znak, který se má použít mezi těmito dvěma tokeny, je středník.

Následující příklad kódu ukazuje deklaraci oboru názvů XAML:

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

Alternativně to lze napsat takto:

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

Předpona local je konvence, která označuje, že typy v rámci oboru názvů jsou pro aplikaci místní. Pokud jsou typy v jiném sestavení, měl by být také definován název sestavení v deklaraci oboru názvů:

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

Předpona oboru názvů se pak zadává při deklarování instance typu z importovaného oboru názvů:

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

Informace o definování vlastního schématu oboru názvů naleznete v tématu Vlastní schémata oboru názvů.