Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
XamlServices is een klasse van .NET die kan worden gebruikt om XAML-scenario's aan te pakken waarvoor geen specifieke toegang tot de XAML-knooppuntstroom is vereist of om systeemgegevens van het XAML-type te gebruiken die zijn verkregen via deze knooppunten.
XamlServices API kan als volgt worden samengevat: Load of Parse om een XAML-laadpad te ondersteunen, Save om een XAML-opslagpad te ondersteunen en Transform een techniek te bieden waarmee een laadpad wordt gekoppeld en het pad wordt opgeslagen.
Transform kan worden gebruikt om van het ene XAML-schema naar het andere te wijzigen. In dit onderwerp vindt u een overzicht van elk van deze API-classificaties en worden de verschillen tussen overbelasting van bepaalde methoden beschreven.
Lading
Verschillende overbelastingen van Load de volledige logica voor een laadpad implementeren. Het laadpad maakt gebruik van XAML in een bepaalde vorm en voert een XAML-knooppuntstroom uit. De meeste van deze laadpaden gebruiken XAML in een gecodeerd XML-tekstbestandsformulier. U kunt echter ook een algemene stroom laden of u kunt een vooraf geladen XAML-bron laden die al is opgenomen in een andere XamlReader-implementatie.
De eenvoudigste overbelasting voor de meeste scenario's is Load(String). Deze overbelasting heeft een fileName parameter die simpelweg de naam is van een tekstbestand dat de XAML bevat die moet worden geladen. Dit is geschikt voor toepassingsscenario's zoals toepassingen met volledige vertrouwensrelatie die eerder de status of gegevens naar de lokale computer hebben geserialiseerd. Dit is ook handig voor frameworks waarin u het toepassingsmodel definieert en een van de standaardbestanden wilt laden die toepassingsgedrag definiëren, gebruikersinterface starten of andere frameworkgedefinieerde mogelijkheden die gebruikmaken van XAML.
Load(Stream) heeft vergelijkbare scenario's. Deze overbelasting kan handig zijn als u de gebruiker bestanden moet laten laden, omdat een Stream een frequente uitvoer is van andere System.IO API's die toegang hebben tot een bestandssysteem. Of u hebt toegang tot XAML-bronnen via asynchrone downloads of andere netwerktechnieken die ook een stream bieden. (Laden vanuit een stroom of door de gebruiker geselecteerde bron kan gevolgen hebben voor de beveiliging. Zie XAML-beveiligingsoverwegingenvoor meer informatie.
Load(TextReader) en Load(XmlReader) zijn overbelastingen die afhankelijk zijn van lezers van indelingen uit eerdere versies van .NET. Als u deze overbelastingen wilt gebruiken, moet u al een lezerexemplaren hebben gemaakt en de Create-API hebben gebruikt om de XAML in het relevante formulier (tekst of XML) te laden. Als u recordpointers al in de andere lezers hebt verplaatst of andere bewerkingen met hen hebt uitgevoerd, is dit niet belangrijk. De logica van het laadpad van Load verwerkt altijd de volledige XAML-invoer vanuit de hoofdmap. De volgende scenario's kunnen het gebruik van deze overbelasting rechtvaardigen:
Ontwerpoppervlakken waar u eenvoudige XAML-bewerkingsmogelijkheden biedt vanuit een bestaande XML-specifieke teksteditor.
Varianten van de kernscenario's System.IO, waarbij u de toegewezen lezers gebruikt om bestanden of streams te openen. Uw logica voert elementaire controle of verwerking van de inhoud uit voordat de inhoud wordt geladen als XAML.
U kunt een bestand of stroom laden, of u kunt een XmlReader, TextReaderof XamlReader die uw XAML-invoer verpakt door te laden met de API's van de lezer.
Intern wordt elk van de voorgaande overbelastingen uiteindelijk Load(XmlReader)en wordt de doorgegeven XmlReader gebruikt om een nieuwe XamlXmlReaderte maken.
De Load handtekening die voorziet in geavanceerdere scenario's, is Load(XamlReader). U kunt deze handtekening gebruiken voor een van de volgende gevallen:
U hebt uw eigen implementatie van een XamlReadergedefinieerd.
U moet instellingen opgeven voor XamlReader die verschillen van de standaardinstellingen.
Voorbeelden van niet-standaardinstellingen:
AllowProtectedMembersOnRoot
BaseUri
IgnoreUidsOnPropertyElements
LocalAssembly
ValuesMustBeString.
De standaardlezer voor XamlServices is XamlXmlReader. Als u uw eigen XamlXmlReader met instellingen opgeeft, zijn de volgende eigenschappen om niet-standaard XamlXmlReaderSettingsin te stellen:
CloseInput
SkipXmlCompatibilityProcessing
XmlLang
XmlSpacePreserve
Ontleden
Parse lijkt op Load omdat het een load path-API is waarmee een XAML-knooppuntstroom wordt gemaakt op basis van XAML-invoer. In dit geval wordt de XAML-invoer echter rechtstreeks geleverd als een tekenreeks die alle XAML bevat die moet worden geladen.
Parse is een lichtgewicht benadering die geschikter is voor toepassingsscenario's dan frameworkscenario's. Zie Parsevoor meer informatie.
Parse is slechts een verpakte Load(XmlReader) aanroep waarbij intern een StringReader is betrokken.
Redden
Verschillende overbelastingen van Save het pad voor opslaan implementeren. Alle Save methoden nemen allemaal een objectgrafiek als invoer en produceren uitvoer als een stroom, bestand of XmlWriter/TextWriter exemplaar.
Het invoerobject is naar verwachting het hoofdobject van een bepaalde objectweergave. Dit kan de enige hoofdmap van een zakelijk object zijn, de hoofdmap van een objectstructuur voor een pagina in een UI-scenario, het werkbewerkingsoppervlak van een ontwerpprogramma of andere concepten van hoofdobjecten die geschikt zijn voor scenario's.
In veel scenario's is de objectstructuur die u opslaat gerelateerd aan een oorspronkelijke bewerking die XAML heeft geladen met Load of met een andere API die is geïmplementeerd door een framework-/toepassingsmodel. Er kunnen verschillen zijn vastgelegd in de objectstructuur die worden veroorzaakt door statuswijzigingen, wijzigingen waarbij de door uw toepassing vastgelegde runtime-instellingen van een gebruiker zijn vastgelegd, XAML zijn gewijzigd omdat uw toepassing een XAML-ontwerpoppervlak is, enzovoort. Met of zonder wijzigingen wordt het concept van het laden van XAML uit markeringen en vervolgens opnieuw opgeslagen en wordt het vergelijken van de twee XAML-opmaakformulieren soms een retourweergave van de XAML genoemd.
De uitdaging bij het opslaan en serialiseren van een complex object dat is ingesteld in een opmaakformulier, is het bereiken van een evenwicht tussen volledige weergave zonder informatieverlies, versus uitgebreidheid waardoor de XAML minder leesbaar is voor mensen. Bovendien kunnen verschillende klanten voor XAML verschillende definities of verwachtingen hebben voor hoe dat saldo moet worden ingesteld. De Save API's vertegenwoordigen één definitie van dat saldo. De Save API's maken gebruik van beschikbare XAML-schemacontext en de standaard op CLR gebaseerde kenmerken van XamlType, XamlMemberen andere systeemconcepten van het XAML-type en XAML-type om te bepalen waar bepaalde XAML-knooppuntstroomconstructies kunnen worden geoptimaliseerd wanneer ze worden opgeslagen in markeringen. XamlServices paden opslaan kan bijvoorbeeld de standaard XAML-schemacontext op basis van CLR gebruiken om XamlType voor objecten op te lossen, een XamlType.ContentPropertykan bepalen en vervolgens tags voor eigenschapselementen weglaten wanneer ze de eigenschap naar de XAML-inhoud van het object schrijven.
Transformeren
Transform XAML converteert of transformeert door een laadpad en een opslagpad als één bewerking te koppelen. Een andere schemacontext of een ander type systeem voor backing kan worden gebruikt voor XamlReader en XamlWriter, wat invloed heeft op de manier waarop de resulterende XAML wordt getransformeerd. Dit werkt goed voor brede transformatiebewerkingen.
Voor bewerkingen die afhankelijk zijn van het onderzoeken van elk knooppunt in een XAML-knooppuntstroom, gebruikt u doorgaans geen Transform. In plaats daarvan moet u uw eigen reeks bewerkingen voor het opslaan van paden definiëren en uw eigen logica uitwerpen. Gebruik in een van de paden een XAML-lezer/XAML writer-paar rond uw eigen knooppuntlus. Laad bijvoorbeeld de eerste XAML met behulp van XamlXmlReader en stap in de knooppunten met opeenvolgende Read aanroepen. Op XAML-knooppuntstroomniveau kunt u nu afzonderlijke knooppunten (typen, leden, andere knooppunten) aanpassen om een transformatie toe te passen of het knooppunt as-islaten. Vervolgens verzendt u het knooppunt naar de relevante Write-API van een XamlObjectWriter en schrijft u het object uit. Zie Understanding XAML Node Stream Structures and Conceptsvoor meer informatie.
Zie ook
.NET Desktop feedback