Sdílet prostřednictvím


Jmenné prostory XAML a mapování jmenných prostorů

Toto téma vysvětluje mapování oboru názvů XML/XAML (xmlns), jak je nalezeno v kořenovém prvku většiny souborů XAML. Popisuje také, jak vytvořit podobná mapování pro vlastní typy a sestavení.

Jak se obory názvů XAML vztahují k definici kódu a knihovnám typů

Xaml se používá k deklaraci objektů, vlastností těchto objektů a vztahů mezi vlastnostmi objektu vyjádřenými jako hierarchie jak ve svém obecném účelu, tak pro aplikaci pro programování aplikací prostředí Windows Runtime. Objekty, které deklarujete v JAZYCE XAML, jsou podporovány knihovnami typů nebo jinými reprezentacemi definovanými jinými programovacími technikami a jazyky. Tyto knihovny můžou být:

  • Integrovaná sada objektů pro prostředí Windows Runtime. Toto je pevná sada objektů a přístup k těmto objektům z XAML používá interní mapování typů a aktivační logiku.
  • Distribuované knihovny poskytované společností Microsoft nebo třetími stranami.
  • Knihovny, které představují definici ovládacího prvku třetí strany, který je integrován vaší aplikací a redistribuován vaším balíčkem.
  • Vaše vlastní knihovna, která je součástí vašeho projektu a která obsahuje některé nebo všechny definice uživatelského kódu.

Informace o záložním typu jsou přidružené ke konkrétním definicím oboru názvů XAML. Architektury XAML, jako je například Windows Runtime, mohou agregovat více sestavení a více oborů názvů kódu, aby se mapovala na jeden obor názvů XAML. To umožňuje koncept slovníku XAML, který pokrývá větší programovací architekturu nebo technologii. Slovní zásoba XAML může být poměrně rozsáhlá – například většina XAML zdokumentovaných pro aplikace prostředí Windows Runtime v tomto odkazu představuje jediný slovník XAML. Slovník XAML je také rozšiřitelný: rozšiřujete ho přidáním typů do definic podpůrného kódu a zároveň zahrnutím těchto typů do oborů názvů kódu, které se již používají jako mapované zdroje oborů názvů pro slovník XAML.

Procesor XAML může vyhledat typy a členy ze záložních sestavení přidružených k danému oboru názvů XAML při vytváření reprezentace objektu za běhu. Proto je XAML užitečný jako způsob, jak formalizovat a vyměňovat definice chování při vytváření objektů a proč se XAML používá jako technika definice uživatelského rozhraní pro aplikaci Windows Runtime.

Obory názvů XAML v typickém použití značek XAML

Soubor XAML téměř vždy deklaruje výchozí obor názvů XAML v kořenovém prvku. Výchozí obor názvů XAML definuje, které prvky můžete deklarovat bez jejich kvalifikace podle předpony. Pokud například deklarujete prvek <Balloon />, analyzátor XAML bude očekávat, že element Bublina existuje a je platný ve výchozím oboru názvů XAML. Naproti tomu pokud bublina není v definovaném výchozím oboru názvů XAML, musíte místo toho kvalifikovat název elementu s předponou, například <party:Balloon />. Předpona označuje, že element existuje v jiném oboru názvů XAML než ve výchozím, a před použitím tohoto elementu musíte mapovat obor názvů XAML na předponu party. Obory názvů XAML se vztahují na konkrétní prvek, na kterém jsou deklarovány, a také na všechny elementy obsažené daným prvkem ve struktuře XAML. Z tohoto důvodu jsou obory názvů XAML téměř vždy deklarovány u kořenových elementů souboru XAML, aby využily výhod této dědičnosti.

Deklarace oboru názvů XAML výchozího jazyka a jazyka XAML

V kořenovém elementu většiny souborů XAML existují dvě deklarace xmlns . První deklarace mapuje obor názvů XAML jako výchozí: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

Jedná se o stejný identifikátor oboru názvů XAML používaný v několika předchozích technologiích Microsoftu, které také používají XAML jako formát značek definic uživatelského rozhraní. Použití stejného identifikátoru je záměrné a je užitečné při migraci dříve definovaného uživatelského rozhraní do aplikace Windows Runtime pomocí C++, C# nebo Visual Basicu.

Druhá deklarace mapuje samostatný obor názvů XAML pro prvky jazyka definované v XAML, mapuje ho (obvykle) na předponu x: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Tato hodnota xmlns a předpona x:, na kterou je namapována, je také identická s definicemi použitými v několika předchozích technologiích Microsoftu, které používají XAML.

Vztah mezi těmito deklaracemi spočívá v tom, že XAML je definice jazyka a prostředí Windows Runtime je jedna implementace, která používá XAML jako jazyk a definuje specifickou slovní zásobu, kde se na její typy odkazuje v XAML.

Jazyk XAML určuje určité jazykové prvky a každý z nich by měl být přístupný prostřednictvím implementací procesoru XAML pracujících s oborem názvů XAML. Konvence mapování x: pro obor názvů jazyka XAML je dodržována šablonami projektů, vzorovým kódem a dokumentací pro jazykové funkce. Obor názvů jazyka XAML definuje několik běžně používaných funkcí, které jsou nezbytné i pro základní aplikace prostředí Windows Runtime. Chcete-li například připojit jakýkoli code-behind k XAML souboru pomocí částečné třídy, musíte tuto třídu pojmenovat jako atribut x:Class v kořenovém prvku daného XAML souboru. Nebo jakýkoli prvek definovaný na stránce XAML jako klíčovaný prostředek v ResourceDictionary a odkazech na prostředky XAML musí mít na příslušném elementu objektu nastavený atribut x:Key.

Obory názvů kódu, které se mapují na výchozí obor názvů XAML

Následuje seznam oborů názvů kódu, které jsou aktuálně mapovány na výchozí obor názvů XAML.

  • Windows.UI
  • Windows.UI.Xaml
  • Windows.UI.Xaml.Automation
  • Windows.UI.Xaml.Automation.Peers
  • Windows.UI.Xaml.Automation.Provider
  • Windows.UI.Xaml.Automation.Text
  • Windows.UI.Xaml.Controls
  • Windows.UI.Xaml.Controls.Primitives
  • Windows.UI.Xaml.Data
  • Windows.UI.Xaml.Documents
  • Windows.UI.Xaml.Input
  • Windows.UI.Xaml.Interop
  • Windows.UI.Xaml.Markup
  • Windows.UI.Xaml.Media
  • Windows.UI.Xaml.Media.Animation
  • Windows.UI.Xaml.Media.Imaging
  • Windows.UI.Xaml.Media.Media3D
  • Windows.UI.Xaml.Navigation
  • Windows.UI.Xaml.Resources
  • Windows.UI.Xaml.Shapes
  • Windows.UI.Xaml.Threading
  • Windows.UI.Text

Další obory názvů XAML

Kromě výchozího oboru názvů a oboru názvů jazyka XAML "x:" můžete také vidět další mapované XAML obory názvů v základní výchozí XAML pro aplikace vygenerované Microsoft Visual Studiem.

d: (http://schemas.microsoft.com/expression/blend/2008)

Obor názvů "d:" XAML je určený pro podporu návrháře, konkrétně podporu návrháře v návrhových plochách XAML v sadě Microsoft Visual Studio. Obor názvů "d:" XAML umožňuje návrhářské nebo návrhové atributy na elementech XAML. Tyto atributy návrháře ovlivňují pouze aspekty návrhu chování XAML. Atributy návrháře se ignorují, zatímco aplikace běží, když stejný analyzátor Windows Runtime XAML načte XAML. Obecně platí atributy návrháře pro libovolný prvek XAML, ale v praxi existují pouze určité scénáře, kdy použití atributu návrháře je vhodné. Zejména mnoho atributů návrháře je určeno k zajištění lepšího prostředí pro interakci s kontexty dat a zdroji dat při vývoji XAML a kódu, které používají datovou vazbu.

  • d:DesignHeight a d:DesignWidth atributy: Tyto atributy se někdy použijí v kořenovém adresáři souboru XAML, který pro vás Visual Studio nebo jiný povrch návrháře XAML vytvoří. Tyto atributy jsou například nastaveny v kořenovém adresáři UserControl XAML, který je vytvořen, pokud přidáte nový UserControl do projektu aplikace. Tyto atributy usnadňují návrh složení obsahu XAML, abyste měli předvídání omezení rozložení, která mohou existovat, jakmile se obsah XAML použije pro instanci ovládacího prvku nebo jinou část větší stránky uživatelského rozhraní.

    Poznámka Pokud migrujete XAML z microsoft Silverlightu, můžete mít tyto atributy na kořenových prvcích, které představují celou stránku uživatelského rozhraní. V tomto případě můžete chtít odebrat atributy. Další funkce návrhářů XAML, jako je simulátor, jsou pravděpodobně užitečnější pro navrhování rozložení stránek, které zpracovávají stav škálování a zobrazení dobře, než je rozložení stránky s pevnou velikostí pomocí d:DesignHeight a d:DesignWidth.

  • d:DataContext: atribut: Tento atribut můžete nastavit na kořen stránky nebo na ovládací prvek, abyste přepsali jakýkoli explicitní nebo zděděný DataContext, který daný objekt jinak má.

  • d:DesignSource – atribut: Určuje zdroj dat v době návrhu pro CollectionViewSource, který přepisuje Zdroj.

  • Rozšíření značek d:DesignInstance a d:DesignData: Tato rozšíření slouží k poskytování datových zdrojů v době návrhu pro d:DataContext nebo d:DesignSource. V této části nebudeme plně zdokumentovat, jak používat datové prostředky v době návrhu. Další informace najdete v tématu Design-Time Atributy. Příklady použití najdete v ukázkových datech na návrhové ploše a pro vytváření prototypů.

mc: (http://schemas.openxmlformats.org/markup-compatibility/2006)

"mc:" označuje a podporuje režim kompatibility značek pro čtení XAML. Předpona "d:" je obvykle přidružena k atributu mc:Ignorable. Tato technika umožňuje analyzátorům XAML za běhu ignorovat atributy návrhu v "d:".

místní: a společné:

"local:" je předpona, která se často mapuje na stránkách XAML pro projekt aplikace UWP šablony. Je namapováno tak, aby odkazovalo na stejný obor názvů, který obsahuje atribut x:Class a kód pro všechny soubory XAML včetně app.xaml. Pokud definujete všechny vlastní třídy, které chcete použít v XAML v témže oboru názvů, můžete použít předponu local: k odkazu na vlastní typy v XAML. Související předpona, která pochází ze šablonovaného projektu aplikace pro UPW, je běžná:. Tato předpona odkazuje na vnořený obor názvů "Common", který obsahuje třídy nástrojů, jako jsou převaděče a příkazy, a definice najdete ve složce Common v zobrazení Průzkumník řešení .

vsm:

Nepoužívat. "vsm:" je předpona, která se někdy zobrazí ve starších šablonách XAML importovaných z jiných technologií Microsoftu. Jmenný prostor původně řešil problematiku zastaralých nástrojů jmenného prostoru. Definice oboru názvů XAML pro "vsm:" byste měli odstranit v jakémkoli kódu XAML, který používáte pro prostředí Windows Runtime, a změnit použití předpon pro VisualState, VisualStateGroup a související objekty tak, aby místo toho používaly výchozí obor názvů XAML. Další informace o migraci XAML najdete v tématu Migrace silverlightu nebo WPF XAML/kódu do aplikace prostředí Windows Runtime.

Mapování vlastních typů na obory názvů a předpony XAML

Obor názvů XAML můžete mapovat tak, abyste mohli použít XAML pro přístup k vlastním typům. Jinými slovy, mapujete obor názvů kódu tak, jak existuje v reprezentaci kódu, která definuje vlastní typ, a přiřazujete ho oboru názvů XAML spolu s předponou pro použití. Vlastní typy jazyka XAML lze definovat v jazyce Microsoft .NET (C# nebo Microsoft Visual Basic) nebo v jazyce C++. Mapování se provádí definováním předpony xmlns . Například xmlns:myTypes definuje nový obor názvů XAML, který je přístupný předponou všech použití s tokenem myTypes:.

Definice xmlns obsahuje hodnotu a také pojmenování předpony. Hodnota je řetězec, který se nachází uvnitř uvozovek za znaménkem rovná se. Běžnou konvencí XML je přidružení oboru názvů XML k identifikátoru URI (Uniform Resource Identifier), aby byla konvence pro jedinečnost a identifikaci. Můžete vidět tuto konvenci pro výchozí obor názvů XAML a obor názvů jazyka XAML, stejně jako pro některé méně používané obory názvů XAML, které jsou používány ve prostředí Windows Runtime XAML. V případě oboru názvů XAML, který mapuje vlastní typy místo zadání identifikátoru URI, zahájíte definici předpony pomocí tokenu using:. Za tokenem using:, pak pojmenujete obor názvů kódu.

Pokud chcete například namapovat předponu "custom1", která umožňuje odkazovat na obor názvů CustomClasses, a použít třídy z tohoto oboru názvů nebo sestavení jako elementy objektu v XAML, stránka XAML by měla obsahovat následující mapování na kořenovém prvku: xmlns:custom1="using:CustomClasses"

Částečné třídy stejného oboru stránky nemusí být mapovány. Například nepotřebujete předpony k odkazu na žádné obslužné rutiny událostí, které jste definovali pro zpracování událostí vycházejících z definice uživatelského rozhraní XAML vaší stránky. Mnoho počátečních XAML stránek z projektů vygenerovaných sadou Visual Studio pro aplikaci Windows Runtime už mapuje předponu local:, která odkazuje na výchozí obor názvů zadaný projektem a obor názvů používaný částečnými definicemi tříd.

Pravidla jazyka CLR

Pokud píšete svůj podpůrný kód v jazyce .NET (C# nebo Microsoft Visual Basic), možná používáte konvence, které používají tečku (".") jako součást názvů namespaces k vytvoření hierarchického uspořádání namespaces kódu. Pokud definice oboru názvů obsahuje tečku, měla by být tečka součástí hodnoty, kterou zadáte za tokenem using:.

Pokud je váš soubor kódu nebo definiční soubor kódu napsán v C++, existují určité konvence, které stále následují formát jazyka CLR (Common Language Runtime), takže syntaxe XAML zůstává stejná. Pokud deklarujete vnořené obory názvů v jazyce C++, oddělovač mezi po sobě jdoucími vnořenými řetězci oboru názvů by měl být "" místo "::", pokud zadáte hodnotu, která následuje za tokenem using:.

Nepoužívejte vnořené typy (například vnoření výčtu v rámci třídy) při definování kódu pro použití s XAML. Vnořené typy nelze vyhodnotit. Neexistuje způsob, jak může analyzátor XAML rozlišit, že je tečka součástí vnořeného názvu typu, nikoli součástí názvu oboru názvů.

Vlastní typy a sestavení

Název sestavení, které definuje podkladové typy pro obor názvů XAML, není v mapování specifikován. Logika, pro která jsou k dispozici sestavení, se řídí na úrovni definice aplikace a je součástí základních principů nasazení a zabezpečení aplikací. Deklarujte všechna sestavení, která chcete zahrnout jako zdroj definice kódu pro XAML jako závislé sestavení v nastavení projektu. Další informace najdete v tématu Vytváření komponent prostředí Windows Runtime v jazyce C# a Visual Basic.

Pokud odkazujete na vlastní typy z definice aplikace primární aplikace nebo definice stránek, jsou tyto typy k dispozici bez další závislé konfigurace sestavení, ale stále musíte mapovat obor názvů kódu, který tyto typy obsahuje. Běžnou konvencí je namapovat předponu "local" pro výchozí obor názvů kódu každé dané stránky XAML. Tato konvence je často součástí spouštění šablon projektů pro projekty XAML.

Připojené vlastnosti

Pokud odkazujete na připojené vlastnosti, musí být část názvu připojené vlastnosti typu vlastníka buď ve výchozím oboru názvů XAML, nebo musí mít předponu. Atributy jsou zřídka předponovány odděleně od svých prvků, ale toto je jeden případ, kdy je to někdy nutné, zejména pro vlastní připojenou vlastnost. Další informace naleznete v tématu Vlastní připojené vlastnosti.