XAML-tjänster
Det här avsnittet beskriver funktionerna i en teknikuppsättning som kallas .NET XAML Services. Majoriteten av de tjänster och API:er som beskrivs finns i sammansättningen System.Xaml
. Tjänsterna omfattar läsare och författare, schemaklasser och schemastöd, fabriker, attributering av klasser, inbyggt stöd för XAML-språk och andra XAML-språkfunktioner.
Om den här dokumentationen
Konceptuell dokumentation för .NET XAML Services förutsätter att du har tidigare erfarenhet av XAML-språket och hur det kan gälla för ett specifikt ramverk, till exempel Windows Presentation Foundation (WPF) eller Windows Workflow Foundation, eller ett specifikt teknikfunktionsområde, till exempel funktionerna för att skapa anpassningar i Microsoft.Build.Framework.XamlTypes. Den här dokumentationen försöker inte förklara grunderna i XAML som markeringsspråk, XAML-syntaxterminologi eller annat introduktionsmaterial. I stället fokuserar den här dokumentationen på att specifikt använda .NET XAML-tjänster som är aktiverade i system.Xaml-sammansättningsbiblioteket. De flesta av dessa API:er gäller scenarier med XAML-språkintegrering och utökningsbarhet. Detta kan omfatta något av följande scenarier:
Utöka funktionerna för XAML-basläsarna eller XAML-skrivarna (bearbeta XAML-nodströmmen direkt, härleda din egen XAML-läsare eller XAML-skrivare).
Definiera XAML-användbara anpassade typer som inte har specifika ramverksberoenden och tilldela typerna för att förmedla deras XAML-typsystemegenskaper till .NET XAML Services.
Vara värd för XAML-läsare eller XAML-skrivare som en komponent i ett program, till exempel en visuell designer eller interaktiv redigerare för XAML-markeringskällor.
Skriva XAML-värdekonverterare (markeringstillägg, typkonverterare för anpassade typer).
Definiera en anpassad XAML-schemakontext (med alternativa sammansättningsinläsningstekniker för säkerhetskopieringstypkällor, med hjälp av uppslagstekniker för kända typer i stället för att alltid återspegla sammansättningar, med hjälp av inlästa sammansättningsbegrepp som inte använder clr-
AppDomain
(common language runtime) och dess associerade säkerhetsmodell).UtökaR XAML-bastypsystemet.
Använda
Lookup
ellerInvoker
tekniker för att påverka XAML-typsystemet och hur typstöd utvärderas.
Om du letar efter introduktionsmaterial på XAML som språk kan du prova XAML-översikt (WPF .NET). I det avsnittet beskrivs XAML för en målgrupp som är ny både för Windows Presentation Foundation (WPF) och för att använda XAML-markerings- och XAML-språkfunktioner. Ett annat användbart dokument är det inledande materialet i XAML-språkspecifikationen.
.NET XAML Services och System.Xaml
i .NET-arkitekturen
.NET XAML Services och sammansättningen System.Xaml
definierar mycket av vad som behövs för att stödja XAML-språkfunktioner. Detta inkluderar basklasser för XAML-läsare och XAML-författare. Den viktigaste funktionen som lagts till i .NET XAML Services som inte fanns i någon av de ramverksspecifika XAML-implementeringarna är en typsystemrepresentation för XAML. Typsystemrepresentationen presenterar XAML på ett objektorienterat sätt som fokuserar på XAML-funktioner utan att ta hänsyn till specifika funktioner i ramverk.
XAML-typsystemet begränsas inte av markeringsformuläret eller körningsinformationen för XAML-ursprunget. det begränsas inte heller av något specifikt backningstypsystem. XAML-typsystemet innehåller objektrepresentationer för typer, medlemmar, XAML-schemakontexter, XML-nivåbegrepp och andra XAML-språkbegrepp eller XAML-inbyggda. Om du använder eller utökar XAML-typsystemet kan du härleda från klasser som XAML-läsare och XAML-skrivare och utöka funktionerna i XAML-representationer till specifika funktioner som aktiveras av ett ramverk, en teknik eller ett program som använder eller genererar XAML. Begreppet XAML-schemakontext möjliggör praktiska objektgrafskrivningsåtgärder från kombinationen av en XAML-objektskrivareimplementering, en tekniks backtypssystem som kommuniceras via sammansättningsinformation i kontexten och XAML-nodkällan. Mer information om XAML-schemakonceptet. se XAML-standardschemakontext och WPF XAML-schemakontext.
XAML-nodströmmar, XAML-läsare och XAML-skrivare
För att förstå den roll som .NET XAML Services spelar i relationen mellan XAML-språket och specifika tekniker som använder XAML som språk, är det bra att förstå begreppet XAML-nodström och hur det konceptet formar API:et och terminologin. XAML-nodströmmen är en konceptuell mellanliggande mellanliggande mellan en XAML-språkrepresentation och objektdiagrammet som XAML representerar eller definierar.
En XAML-läsare är en entitet som bearbetar XAML i någon form och genererar en XAML-nodström. I API:et representeras en XAML-läsare av basklassen XamlReader.
En XAML-skrivare är en entitet som bearbetar en XAML-nodström och genererar något annat. I API:et representeras en XAML-skrivare av basklassen XamlWriter.
De två vanligaste scenarierna med XAML läser in XAML för att instansiera ett objektdiagram och sparar ett objektdiagram från ett program eller verktyg och skapar en XAML-representation (vanligtvis i markeringsformulär som sparas som textfil). Att läsa in XAML och skapa ett objektdiagram kallas ofta i den här dokumentationen för inläsningssökvägen. Att spara eller serialisera ett befintligt objektdiagram till XAML kallas ofta för sparandesökvägen i den här dokumentationen.
Den vanligaste typen av inläsningssökväg kan beskrivas på följande sätt:
Börja med en XAML-representation i UTF-kodat XML-format och spara som en textfil.
Läs in XAML i XamlXmlReader. XamlXmlReader är en XamlReader underklass.
Resultatet är en XAML-nodström. Du kan komma åt enskilda noder i XAML-nodströmmen med hjälp av XamlXmlReader / XamlReader API. Den vanligaste åtgärden här är att gå vidare via XAML-nodströmmen och bearbeta varje nod med hjälp av en metafor för aktuell post.
Skicka de resulterande noderna från XAML-nodströmmen till ett XamlObjectWriter API. XamlObjectWriter är en XamlWriter underklass.
XamlObjectWriter skriver ett objektdiagram, ett objekt i taget, i enlighet med förloppet via XAML-källnodströmmen. Objektskrivning görs med hjälp av en XAML-schemakontext och en implementering som kan komma åt sammansättningar och typer av ett backningstypsystem och ramverk.
Anropa Result i slutet av XAML-nodströmmen för att hämta objektdiagrammets rotobjekt.
Den vanligaste typen av sparandesökväg kan beskrivas på följande sätt:
Börja med objektdiagrammet för en hel programkörningstid, användargränssnittets innehåll och tillstånd för en körningstid eller ett mindre segment av ett övergripande programobjektrepresentation vid körning.
Från ett logiskt startobjekt, till exempel en programrot eller en dokumentrot, läser du in objekten i XamlObjectReader. XamlObjectReader är en XamlReader underklass.
Resultatet är en XAML-nodström. Du kan komma åt enskilda noder i XAML-nodströmmen med hjälp av XamlObjectReader och XamlReader API. Den vanligaste åtgärden här är att gå vidare via XAML-nodströmmen och bearbeta varje nod med hjälp av en metafor för aktuell post.
Skicka de resulterande noderna från XAML-nodströmmen till ett XamlXmlWriter API. XamlXmlWriter är en XamlWriter underklass.
XamlXmlWriter skriver XAML i en XML UTF-kodning. Du kan spara detta som en textfil, som en ström eller i andra former.
Anropa Flush för att hämta de slutliga utdata.
Mer information om XAML-nodströmsbegrepp finns i Understanding XAML Node Stream Structures and Concepts.
XamlServices-klassen
Det är inte alltid nödvändigt att hantera en XAML-nodström. Om du vill ha en grundläggande inläsningssökväg eller en grundläggande sökväg för sparande kan du använda API:er i klassen XamlServices.
Olika signaturer för Load implementera en inläsningssökväg. Du kan antingen läsa in en fil eller dataström eller läsa in en XmlReader, TextReader eller XamlReader som omsluter dina XAML-indata genom att läsa in med läsarens API:er.
Olika signaturer för Save spara ett objektdiagram och generera utdata som en ström, fil eller XmlWriter/TextWriter instans.
Transform konverterar XAML genom att länka en inläsningssökväg och en spara sökväg som en enda åtgärd. En annan schemakontext eller ett annat stödtypssystem kan användas för XamlReader och XamlWriter, vilket påverkar hur den resulterande XAML omvandlas.
Mer information om hur du använder XamlServicesfinns i XAMLServices Class och Basic XAML Reading or Writing.
XAML-typsystem
XAML-typsystemet tillhandahåller de API:er som krävs för att fungera med en viss enskild nod i en XAML-nodström.
XamlType är representationen för ett objekt – det du bearbetar mellan en startobjektnod och en slutobjektnod.
XamlMember är representationen för en medlem i ett objekt – det du bearbetar mellan en startmedlemsnod och en slutmedlemsnod.
API:er som GetAllMembers och GetMember och DeclaringType rapportera relationerna mellan en XamlType och XamlMember.
Standardbeteendet för XAML-typsystemet som implementeras av .NET XAML Services baseras på CLR (Common Language Runtime) och statisk analys av CLR-typer i sammansättningar med hjälp av reflektion. För en specifik CLR-typ kan därför standardimplementeringen av XAML-typsystemet exponera XAML-schemat för den typen och dess medlemmar och rapportera det i termer av XAML-typsystemet. I standardsystemet för XAML-typ mappas begreppet tilldelning av typer till CLR-arv, och begreppen för instanser, värdetyper och så vidare mappas också till de stödjande beteendena och funktionerna i CLR.
Referens för XAML-språkfunktioner
För att stödja XAML tillhandahåller .NET XAML Services en specifik implementering av XAML-språkbegrepp enligt definitionen för XAML-språkets XAML-namnområde. Dessa dokumenteras som specifika referenssidor. Språkfunktionerna dokumenteras utifrån hur dessa språkfunktioner beter sig när de bearbetas av en XAML-läsare eller XAML-skrivare som definieras av .NET XAML Services. Mer information finns i XAML-namnområde (x:) språkfunktioner.
.NET Desktop feedback