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 elementu 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 jsou , , ContentPageLabela Button.

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 deklarování ne výchozích oborů názvů s předponou, která se používá 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 prvky a atributy, které jsou vnitřní pro XAML (konkrétně specifikace XAML 2009).

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

Konstrukce Description
x:Arguments Určuje argumenty konstruktoru pro 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 XAML. Název třídy musí odpovídat názvu třídy souboru za kódem. Všimněte si, že tento konstruktor se může zobrazit pouze v kořenovém prvku souboru XAML.
x:DataType Určuje typ objektu, ke kterému element XAML a jeho podřízené prvky budou svázané.
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 elementu 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:DataType najdete v tématu Kompilované vazby. Další informace o atributu x:FieldModifier najdete v tématu Modifikátory polí. Další informace oatributchx:Argumentsx:FactoryMethod Další informace o atributu x:TypeArguments najdete v tématu Obecné typy.

Poznámka

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

Deklarace oboru názvů v XAML 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 dědí všechny prvky v daném souboru deklaraci oboru názvů.

Deklarace oborů názvů pro typy

Na typy lze odkazovat v XAML deklarováním oboru názvů XAML s předponou, s deklarací oboru názvů určujícím 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 lze vynechat, pokud je hodnota oboru názvů clr ve stejném sestavení jako kód aplikace, který odkazuje na typy.

Poznámka

Znak, který clr-namespace odděluje token using od hodnoty, je dvojtečka, zatímco znak oddělující assembly token od jeho hodnoty je znaménkem rovná se. Znak, který se má použít mezi 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>

Můžete to také napsat takto:

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

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

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

Předpona oboru názvů se pak určí 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ů najdete v tématu Vlastní schémata oboru názvů.