XamlReader Klas

Definitie

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

public ref class XamlReader
public class XamlReader
type XamlReader = class
Public Class XamlReader
Overname
XamlReader

Voorbeelden

In het volgende voorbeeld wordt een Button tekenreeks geconverteerd naar een tekenreeks met behulp van de XamlWriter klasse. De tekenreeks wordt vervolgens weer geladen in een Button met behulp van de statische Load methode in de XamlReader klasse.

// Create the Button.
Button originalButton = new Button();
originalButton.Height = 50;
originalButton.Width = 100;
originalButton.Background = Brushes.AliceBlue;
originalButton.Content = "Click Me";

// Save the Button to a string.
string savedButton = XamlWriter.Save(originalButton);

// Load the button
StringReader stringReader = new StringReader(savedButton);
XmlReader xmlReader = XmlReader.Create(stringReader);
Button readerLoadButton = (Button)XamlReader.Load(xmlReader);
' Create the Button.
Dim originalButton As New Button()
originalButton.Height = 50
originalButton.Width = 100
originalButton.Background = Brushes.AliceBlue
originalButton.Content = "Click Me"

' Save the Button to a string.
Dim savedButton As String = XamlWriter.Save(originalButton)

' Load the button
Dim stringReader As New StringReader(savedButton)
Dim xmlReader As XmlReader = XmlReader.Create(stringReader)
Dim readerLoadButton As Button = CType(XamlReader.Load(xmlReader), Button)

Opmerkingen

De synchrone Load methoden zijn statisch, maar de asynchrone LoadAsync methoden zijn niet statisch en vereisen een exemplaar van de XamlReader klasse dat moet worden gebruikt.

De uitvoer van de Load methoden is één object, dat het hoofdobject van een gemaakte objectstructuur of objectgrafiek vertegenwoordigt. Objectgrafieken die zijn gemaakt door XamlReader worden doorgaans toegevoegd aan de bestaande objectstructuur van een WPF toepassing tijdens runtime. Anders wordt de nieuwe objectgrafiek beschouwd als losgekoppeld voor doeleinden van het WPF toepassingsmodel. Dit betekent dat het niet wordt weergegeven en niet kan worden geopend met behulp van een van de objectstructuurtechnieken die zijn toegepast op de hoofdobjectstructuur van de WPF toepassing (bijvoorbeeld de API's FindName, LogicalTreeHelper, VisualTreeHelper). Zie Trees in WPF voor meer informatie over objectstructuurconcepten.

XamlReader ondersteunt de volgende primaire scenario's:

  • Cloning/object factory: Zonder extra mechanismen kan een verwijzingstype over het algemeen niet worden opgenomen in meer dan één positie in een WPF objectstructuur. (Voorbeelden van aanvullende mechanismen die ondersteuning bieden voor delen of opnieuw gebruiken in WPF objecten bevatten die zijn gebaseerd op Freezable, of ondersteuning voor veelgebruikte deelbare objecten zoals Brush waarnaar wordt verwezen als een item uit een ResourceDictionary.) Een manier om een object te klonen dat zich al in de objectstructuur bevindt, is het serialiseren van het object met behulp van XamlWriter.Save. Vervolgens gebruikt u de geserialiseerde tekenreeks als invoer voor een aanroep naar Load, met een stroom of XmlReader als intermediair.

  • Het samenstellen van objecten op basis van Just-In-Time-informatie: er zijn vaak andere manieren om de status van bestaande objecten te wijzigen met late binding of door de gebruiker opgegeven invoer. U kunt bijvoorbeeld dezelfde waarde gebruiken om meer dan één eigenschap in te stellen of gegevensbinding te gebruiken. Maar als u een scenario hebt waarin zelfs het type object dat moet worden gemaakt alleen kan worden bepaald tijdens runtime of met interactie van de gebruiker, is het maken van een dergelijk object door een tekenreeks voor Load invoer op te bouwen vaak een nuttige techniek.

  • Bestaande resourcetechnieken gebruiken: het Stream type wordt vaak gebruikt in andere frameworks of technologieën voor het overdragen van gegevens of objecten over toepassingsgrenzen of voor vergelijkbare situaties. Vervolgens kunt u de Stream technieken gebruiken om XAML-geformatteerde gegevens op te slaan of te verkrijgen die u uiteindelijk gebruikt om een object te maken als onderdeel van uw toepassing.

  • Fixed documents: Uw toepassing kan lokale of gedownloade XPS-documenten laden voor opname in een WPF toepassingsobjectstructuur en gebruikersinterface.

Note

In deze documentatie wordt soms een objectgrafiek beschreven, in plaats van een objectstructuur. Een strikte bovenliggende/onderliggende relatie bestaat niet altijd in de runtime-objectrelaties van een runtime-WPF toepassing, dus een objectgrafiek is een veel toepasselijkere terminologie. Omdat WPF echter ook twee verschillende API's voor structuurconcepten (LogicalTreeHelper, VisualTreeHelper) bevat, is de boomafoor nog steeds adequaat van toepassing op de meeste echte gevallen in WPF. Vanuit het perspectief van de XAML-taal is de objectgrafiek echter vaak de beste manier om na te denken over hoe objecten worden gemaakt uit XAML, omdat de XAML-taal zelf niet noodzakelijkerwijs helperklassemethoden specificeert die de relaties meer in een structuurstructuur brengen.

Code Access Security, Loose XAML en XamlReader

XAML is een opmaaktaal die rechtstreeks staat voor object instantiëring en uitvoering. Daarom hebben elementen die zijn gemaakt in XAML dezelfde mogelijkheid om te communiceren met systeembronnen (netwerktoegang, bestandssysteem-IO, bijvoorbeeld) als de equivalente gegenereerde code.

WPF ondersteunt het .NET security framework Code Access Security (CAS). Dit betekent dat WPF inhoud die wordt uitgevoerd in de internetzone minder uitvoeringsmachtigingen heeft. 'Losse XAML' (pagina's van niet-gecompileerde XAML die tijdens de laadtijd door een XAML-viewer worden geïnterpreteerd) en XAML-browsertoepassing (XBAP) worden meestal uitgevoerd in deze internetzone en gebruiken dezelfde machtigingenset. XAML die in een volledig vertrouwde toepassing is geladen, heeft echter dezelfde toegang tot de systeembronnen als de hostingtoepassing. Zie WPF Partial Trust Securityvoor meer informatie.

De gevolgen van deze instructies zijn XamlReader dat uw toepassingsontwerp vertrouwensbeslissingen moet nemen over de XAML die u besluit te laden. Als u XAML laadt dat niet wordt vertrouwd, kunt u overwegen om uw eigen sandboxingtechniek te implementeren voor de manier waarop u de resulterende objectgrafiek laadt.

XamlReader kan ook worden aangeroepen door gedeeltelijke vertrouwenscode. In dit geval wordt de internetbeveiligingszone toegepast op beveiliging van codetoegang. Als iets in de geladen XAML ongeldig is onder de internetbeveiligingszone, wordt er een XAML-parserings uitzondering gegenereerd. Onder XBAP en andere gevallen die gedeeltelijke vertrouwensrelatie hebben op platformniveau, waarbij XamlReader deel uitmaakt van de uitvoering, krijgt u hetzelfde uitzonderingsgedrag als bij expliciete gedeeltelijke vertrouwensaanroepen.

WPF XAML, XAML Readers/Writers en XAML Language Versioning

XAML2009 bevat taalfuncties zoals x:Reference en x:FactoryMethod. U kunt handtekeningen van of Load XAML laden die gebruikmaken van Parse deze functies. Deze taalfuncties worden echter niet ondersteund voor XAML die moeten worden gecompileerd (zoals XAML voor de Pagina buildactie in een WPF toepassing, of XAML die de build-taak in de build-acties omvat).

WPF typen en de WPF technologie in algemene ondersteuningsconcepten die afhankelijk zijn van toegang tot WPF interne functies. Hoe WPF bijvoorbeeld afhankelijkheidseigenschappen implementeert, is afhankelijk van interne technieken voor efficiënte opzoekacties van typeleden. Toegang tot deze interne functies wordt ingeschakeld door de XAML-lees- en schrijf-API's die worden geleverd in XamlWriter en XamlReader uit de System.Windows.Markup naamruimte en PresentationFramework-assembly. De XAML-lezers en XAML-schrijvers van het systeem.Xaml-assembly (klassen op basis van System.Xaml.XamlReader, System.Xaml.XamlWriter) hebben echter geen toegang tot de interne WPF. Er is geen afhankelijkheid van System.Xaml tot een WPF-specifieke assembly. Zonder toegang tot de interne WPF kunnen System.Xaml-lezers en schrijvers niet alle WPF typen of typen correct laden of opslaan op basis van WPF typen. De lezers en schrijvers van System.Xaml begrijpen met name geen concepten zoals het WPF eigenschapsarchief voor afhankelijkheden, of alle details van hoe WPF stijlen, resourcewoordenlijsten en sjablonen gebruikt. Daarom kunt u kiezen uit:

  • Als u WPF typen laadt en/of als u XAML in BAML-formulier gebruikt, gebruikt u de PresentationFramework XAML-lezers en XAML-schrijvers.

  • Als u niet vertrouwt op WPF typen of de BAML-vorm van XAML en geen gebruik maakt van de XAML-lezer van een andere technologie of de XAML writer-implementatie om redenen die specifiek zijn voor dat framework, gebruikt u de System.Xaml XAML-lezers en XAML-schrijvers.

System.Xaml Backing Implementation in .NET 4

XamlReader is het aanroepbare API-oppervlak voor de WPF XAML-parser op frameworkniveau. Dezelfde onderliggende XAML-parser voert ook de runtime XAML-laad- en parsering uit voor WPF toepassingen die gericht zijn op .NET Framework 3.0 en .NET Framework 3.5.

Als u zich richt op .NET Framework 4, is de externe API hetzelfde, maar onderdelen van de implementatie zijn gebaseerd op de algemene XAML-implementatie van .NET Framework 4 in de System.Xaml-assembly, waardoor veel van de technische en rapportageaspecten van het parseren van XAML worden verbeterd. Het doel .NET Framework 4 omvat noodzakelijkerwijs het opnemen van System.Xaml als referentie en details van de implementatie, zoals de gerapporteerde uitzonderingen, kunnen afkomstig zijn van door System.Xaml gedefinieerde typen.

Constructors

Name Description
XamlReader()

Initialiseert een nieuw exemplaar van de XamlReader klasse.

Methoden

Name Description
CancelAsync()

Hiermee wordt de huidige asynchrone belastingsbewerking afgebroken als er een asynchrone laadbewerking in behandeling is.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetWpfSchemaContext()

Retourneert een XamlSchemaContext-object dat de WPF schemacontextinstellingen voor een XamlReader vertegenwoordigt.

Load(Stream, Boolean)

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

Load(Stream, ParserContext, Boolean)

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

Load(Stream, ParserContext)

Leest de XAML-invoer in de opgegeven Stream en retourneert een object dat de hoofdmap van de bijbehorende objectstructuur is.

Load(Stream)

Leest de XAML-invoer in de opgegeven Stream en retourneert de Object hoofdmap van de bijbehorende objectstructuur.

Load(XamlReader)

Leest de XAML-invoer via een opgegeven XamlReader en retourneert een object dat de hoofdmap van de bijbehorende objectstructuur is.

Load(XmlReader, Boolean)

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

Load(XmlReader)

Leest de XAML-invoer in de opgegeven XmlReader en retourneert een object dat de hoofdmap van de bijbehorende objectstructuur is.

LoadAsync(Stream, Boolean)

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

LoadAsync(Stream, ParserContext, Boolean)

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

LoadAsync(Stream, ParserContext)

Leest de XAML-invoer in de opgegeven Stream en retourneert de hoofdmap van de bijbehorende objectstructuur.

LoadAsync(Stream)

Leest de XAML-invoer in de opgegeven Stream en retourneert de hoofdmap van de bijbehorende objectstructuur.

LoadAsync(XmlReader, Boolean)

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

LoadAsync(XmlReader)

Leest de XAML-invoer in de opgegeven XmlReader en retourneert de hoofdmap van de bijbehorende objectstructuur.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Parse(String, Boolean)

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

Parse(String, ParserContext, Boolean)

Leest XAML-invoer en maakt een objectgrafiek met behulp van de WPF standaard XAML-lezer en een bijbehorende XAML-objectschrijver.

Parse(String, ParserContext)

Leest de XAML-markering in de opgegeven tekenreeks (met behulp van een opgegeven ParserContext) en retourneert een object dat overeenkomt met de hoofdmap van de opgegeven opmaak.

Parse(String)

Leest de XAML-invoer in de opgegeven tekenreeks en retourneert een object dat overeenkomt met de hoofdmap van de opgegeven markering.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

gebeurtenis

Name Description
LoadCompleted

Treedt op wanneer een asynchrone laadbewerking is voltooid.

Van toepassing op

Zie ook