XamlReader XamlReader XamlReader XamlReader Class

Definition

Liest XAML-Eingabe und erstellt ein Objektdiagramm und verwendet dazu den WPF-XAML-Standardparser sowie einen zugeordneten XAML-Objektwriter.Reads XAML input and creates an object graph, using the WPF default XAML reader and an associated XAML object writer.

public ref class XamlReader
public class XamlReader
type XamlReader = class
Public Class XamlReader
Vererbung
XamlReaderXamlReaderXamlReaderXamlReader

Beispiele

Im folgenden Beispiel wird eine Button in eine Zeichenfolge mithilfe der XamlWriter Klasse.The following example converts a Button into a string using the XamlWriter class. Die Zeichenfolge dann wieder geladen wird eine Button mit der statischen Load Methode für die XamlReader Klasse.The string is then loaded back into a Button using the static Load method on the XamlReader class.

// 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)

Hinweise

Die synchrone Load Methoden sind statisch, aber die asynchronen LoadAsync Methoden sind nicht statisch und erfordern eine Instanz der dem XamlReader zu verwendende Klasse an.The synchronous Load methods are static, but the asynchronous LoadAsync methods are not static and require an instance of the XamlReader class to use.

Die Ausgabe der Load Methoden wird ein einzelnes Objekt, das das Stammobjekt der erstellten Objektstruktur oder eines Objektdiagramms darstellt.The output of the Load methods is a single object, which represents the root object of a created object tree or object graph. Objektdiagramme, die vom erstellten XamlReader werden in der Regel an der vorhandenen Objektstruktur einer WPF-Anwendung zur Laufzeit hinzugefügt.Object graphs that are created by XamlReader are typically added to the existing object tree of a WPF application at run time. Andernfalls gilt die neue Objektdiagramm als zum Zweck der WPF-Anwendungsmodell getrennt.Otherwise the new object graph is considered disconnected for purposes of the WPF application model. Dies bedeutet, dass es nicht gerendert, nicht auf der WPF-Anwendung Hauptobjektstruktur angewendet zugegriffen mithilfe eines der Verfahren der Objekt-Struktur als werden (z. B. die APIs FindName, LogicalTreeHelper, VisualTreeHelper).This means that it does not render, and cannot be accessed using any of the object tree techniques as applied to the WPF application's main object tree (for example, the APIs FindName, LogicalTreeHelper, VisualTreeHelper). Weitere Informationen zu den Konzepten der Objekt-Struktur finden Sie unter Strukturen in WPF.For more information on object tree concepts, see Trees in WPF.

XamlReader unterstützt die folgenden Hauptszenarien:XamlReader supports the following primary scenarios:

  • Das Klonen/Objekt-Factory: Ohne zusätzliche Mechanismen kann kein Verweistyp in der Regel mehr als eine Position in der Struktur eines WPF-Objekts eingeschlossen werden.Cloning/object factory: Without additional mechanisms, a reference type generally cannot be included in more than one position in a WPF object tree. (Beispiele für weiterer Mechanismen, die bieten Unterstützung für die Freigabe erneut in WPF oder Verwendung sind Objekte auf der Grundlage von Freezable, oder Unterstützung für häufig gemeinsam nutzbare Objekte wie z. B. Brush verwiesen wird, werden als ein Element aus einem ResourceDictionary.) Eine Möglichkeit, ein Objekt zu klonen, der bereits in die Objektstruktur wird serialisiert das Objekt mit XamlWriter.Save.(Examples of additional mechanisms that offer support for sharing or re-use in WPF include objects that are based on Freezable, or support for commonly shareable objects such as Brush that are referenced as an item from a ResourceDictionary.) One way to clone an object that is already in the object tree is to serialize the object using XamlWriter.Save. Sie verwenden dann die serialisierte Zeichenfolge als Eingabe für einen Aufruf von Load, mit einem Stream oder XmlReader als Vermittler.You then use the serialized string as input for a call to Load, with a stream or XmlReader as an intermediary.

  • Erstellen Objekte basierend auf just-in-Time-Informationen: Es gibt häufig weitere Möglichkeiten, die späte Bindung oder vom Benutzer bereitgestellte Eingabe, die der Status von vorhandenen Objekten geändert haben.Constructing objects based on just-in-time information: There are often other ways to have late-binding or user-supplied input change the state of existing objects. Beispielsweise können den gleichen Wert verwenden, um mehr als eine Eigenschaft festzulegen oder mithilfe der Datenbindung.For example you could use the same value to set more than one property, or use data binding. Aber wenn Sie ein Szenario, in dem auch der Typ des zu erstellenden Objekts nur bestimmbar zur Laufzeit oder Interaktion des Benutzers ist, verfügen, erstellen Sie ein solches Objekt durch das Einrichten einer Zeichenfolge für Load Eingabe ist oft eine nützliche Technik.But if you have a scenario where even the type of object to create is only determinable at run time or with user interaction, then creating such an object by building up a string for Load input is often a useful technique.

  • Verwenden die vorhandene Ressource Techniken: Die Stream Typ wird häufig in anderen Frameworks oder Technologien verwendet, für die Übertragung von Daten oder Objekte über Anwendungsgrenzen hinweg oder für ähnliche Situationen.Using existing resource techniques: The Stream type is used frequently in other frameworks or technologies for transferring data or objects across application boundaries or for similar situations. Anschließend können Sie die Stream Techniken speichern oder Abrufen von XAML-formatierte Daten, die Sie später verwenden, um ein Objekt als Teil Ihrer Anwendung zu erstellen.You can then use the Stream techniques to store or obtain XAML-formatted data that you eventually use to create an object as part of your application.

  • Fixierte Dokumente: Ihre Anwendung kann lokal oder heruntergeladene XPS-Dokumente für die Aufnahme in eine Struktur des WPF-Objekts und die Benutzeroberfläche geladen werden.Fixed documents: Your application might load local or downloaded XPS documents for inclusion in a WPF application object tree and UI.

Hinweis

In dieser Dokumentation manchmal wird ein Objektdiagramm, im Gegensatz zu einer Objektstruktur beschrieben.This documentation sometimes describes an object graph, as opposed to an object tree. Eine strenge über-/ unterordnungsbeziehung existiert immer nicht in das Objekt zur Laufzeit Beziehungen zwischen einer WPF-Anwendung zur Laufzeit ein Objektdiagramm ist ein Begriff mit der zunehmenden Verbreitung anwendbar.A strict parent-child relationship does not always exist in the run time object relationships of a run time WPF application, so an object graph is a more widely applicable terminology. Aber da WPF auch zwei andere Struktur Konzeptualisierung APIs umfasst (LogicalTreeHelper, VisualTreeHelper) die Baumstrukturmetapher gilt weiterhin ordnungsgemäß auf den meisten realen praktischen Fällen in WPF.However, because WPF also includes two different tree conceptualization APIs (LogicalTreeHelper, VisualTreeHelper) the tree metaphor still applies adequately to most real-world cases in WPF. Aus der Perspektive der XAML-Sprache, das Objektdiagramm ist jedoch häufig die beste Möglichkeit, stellen Sie sich zur Erstellung von Objekten aus XAML, da die XAML-Sprache selbst nicht unbedingt angibt Helper-Klasse Methoden, die den Beziehungen, die mehr bieten in einem Baumstruktur erneut aus.From the XAML language perspective however, the object graph is often the best way to think about how objects are created out of XAML, because the XAML language itself does not necessarily specify helper class methodologies that bring the relationships more into a tree structure again.

Codezugriffssicherheit Loose XAML und XamlReaderCode Access Security, Loose XAML, and XamlReader

XAML ist eine Markupsprache, die Objektinstanziierung und -ausführung direkt darstellt.XAML is a markup language that directly represents object instantiation and execution. Daher verfügen in XAML erstellte Elemente über dieselbe Fähigkeit zur Interaktion mit Systemressourcen (z.B. Netzwerkzugriff, Dateisystem E/A), wie der gleichwertig generierte Code.Therefore, elements created in XAML have the same ability to interact with system resources (network access, file system IO, for example) as the equivalent generated code does.

WPFWPF unterstützt die .NET.NET Sicherheitsframework Codezugriffssicherheit (Code Access Security, CAS)Code Access Security (CAS).supports the .NET.NET security framework Codezugriffssicherheit (Code Access Security, CAS)Code Access Security (CAS). Dies bedeutet, dass in der Internetzone ausgeführter WPFWPF-Inhalt eingeschränkte Ausführungsberechtigungen hat.This means that WPFWPF content running in the internet zone has reduced execution permissions. "Loose XAML" (Seiten nicht kompilierten XAML-Codes, die beim Laden von einem XAML-Viewer interpretiert werden) und XAML-Browseranwendung (XBAP)XAML browser application (XBAP) werden normalerweise in dieser Internetzone ausgeführt und verwenden die gleiche Berechtigungsmenge."Loose XAML" (pages of noncompiled XAML interpreted at load time by a XAML viewer) and XAML-Browseranwendung (XBAP)XAML browser application (XBAP) are usually run in this internet zone and use the same permission set. Wenn XAML allerdings in eine voll vertrauenswürdige Anwendung geladen wird, hat es den gleichen Zugriff auf Systemressourcen wie die Hostanwendung.However, XAML loaded in to a fully trusted application has the same access to the system resources as the hosting application does. Weitere Informationen finden Sie unter WPF-Sicherheit mit teilweiser Vertrauenswürdigkeit.For more information, see WPF Partial Trust Security.

Die Auswirkungen dieser Anweisungen für XamlReader besteht darin, dass der Entwurf der Anwendung vornehmen muss Entscheidungen über die Vertrauenswürdigkeit über die XAML Sie laden möchten.The implications of these statements for XamlReader is that your application design must make trust decisions about the XAML you decide to load. Wenn Sie XAML, die nicht vertrauenswürdig ist laden, sollten erwägen Sie, Ihre eigenen Sandkastentechnik für, wie Sie das resultierende Objektdiagramm laden zu verwenden.If you are loading XAML that is not trusted, consider implementing your own sandboxing technique for how you load the resulting object graph.

XamlReader kann auch von teilweise vertrauenswürdigem Code aufgerufen werden.XamlReader can also be called by partial trust code. In diesem Fall wird die Sicherheit der Zone des Internets für Codezugriffssicherheit angewendet.In this case, Internet security zone is applied for code access security. Wenn alle Elemente in der geladenen XAML Internetsicherheitszone ungültig ist, wird eine XAML-Analyse-Ausnahme ausgelöst.If anything in the loaded XAML is invalid under Internet security zone, a XAML parse exception is thrown. Unter XBAP und in anderen Fällen mit teilweiser Vertrauenswürdigkeit auf Plattformebene, wobei XamlReader ist Teil der Ausführung erhalten Sie das gleiche Verhalten wie bei expliziten teilweiser Vertrauenswürdigkeit Aufrufe.Under XBAP and other cases that are partial trust at the platform level, where XamlReader is part of the execution, you get the same exception behavior as with explicit partial trust calls.

WPF-XAML, XAML-Leser/Schreiber und Versionsverwaltung für XAML-SpracheWPF XAML, XAML Readers/Writers, and XAML Language Versioning

XAML2009 enthält Funktionen, wie z. B. X: Reference- und X: FactoryMethod-.XAML2009 includes language features such as x:Reference and x:FactoryMethod. Sie können die Signaturen der Load oder Parse XAML geladen, die diese Funktionen verwendet.You can use signatures of Load or Parse to load XAML that uses these features. Diese Sprachfunktionen werden jedoch nicht unterstützt, für XAML, das Markup kompiliert werden muss (z. B. XAML für die Seite Buildvorgang in einer WPF-Anwendung oder eine beliebige XAML, der die Aufgabe in den Buildvorgängen Markup beinhaltet).However, those language features are not supported for XAML that needs to be markup compiled (such as XAML for the Page build action in a WPF application, or any XAML that involves the markup compile task in the build actions).

WPF-Typen und die WPF-Technologie unterstützen im allgemeinen Konzepte, die für den Zugriff auf WPF-Interna basieren.WPF types and the WPF technology in general support concepts that rely on access to WPF internals. Beispielsweise, basiert wie WPF Abhängigkeitseigenschaften implementiert auf internen Techniken für die effiziente Typmember-Suche.For instance, how WPF implements dependency properties relies on internal techniques for efficient type-member lookup. Zugriff auf diese internen Werte ist aktiviert, die XAML Lesen und Schreiben von APIs, die im bereitgestellten XamlWriter und XamlReader aus der System.Windows.Markup Namespace und PresentationFramework-Assembly.Access to these internals is enabled by the XAML reading and writing APIs provided in XamlWriter and XamlReader from the System.Windows.Markup namespace and PresentationFramework assembly. Allerdings die Low-Level-XAML-Reader und XAML-Writern aus System.Xaml-Assembly (Klassen basierend auf System.Xaml.XamlReader, System.Xaml.XamlWriter) haben keinen Zugriff auf die WPF-Interna.However, the lower-level XAML readers and XAML writers from the System.Xaml assembly (classes based on System.Xaml.XamlReader, System.Xaml.XamlWriter) do not have access to the WPF internals. Es gibt keine Abhängigkeit von "System.xaml" für jede WPF-spezifische-Assembly.There is no dependency from System.Xaml to any WPF-specific assembly. Ohne Zugriff auf die WPF-Interna System.Xaml-Readern und Writern können nicht ordnungsgemäß geladen werden, oder speichern Sie alle WPF-Typen oder Typen basierend auf WPF-Typen.Without access to the WPF internals, System.Xaml readers and writers cannot correctly load or save all WPF types, or types based on WPF types. Insbesondere, dass "System.xaml" Reader und Writer nicht verstanden Konzepte, z. B. Unterstützung Eigenschaftenspeicher, oder alle Einzelheiten wie die WPF-Stile, Ressourcenverzeichnisse und Vorlagen verwendet der WPF-Abhängigkeitseigenschaft.In particular, the System.Xaml readers and writers do not understand concepts such as the WPF dependency property backing property store, or all the specifics of how WPF uses styles, resource dictionaries and templates. Aus diesem Grund müssen Sie eine Auswahl treffen:Therefore you have a choice to make:

  • Wenn Sie WPF-Typen laden, und/oder Sie XAML in BAML-Form, in keiner Weise verwenden, verwenden Sie PresentationFramework XAML-Reader und XAML-Writer.If you are loading WPF types, and/or you are using XAML in BAML form in any way, use the PresentationFramework XAML readers and XAML writers.

  • Wenn Sie nicht auf alle WPF-Typen oder die BAML-Form von XAML verlassen, und verwenden einen anderen bestimmten Technologie des XAML-Reader oder XAML-Writer-Implementierung nicht aus Gründen, die für dieses Framework spezifisch sind, verwenden Sie "System.xaml"-XAML-Reader und XAML-Writer.If you are not relying on any WPF types or the BAML form of XAML, and are not using another specific technology's XAML reader or XAML writer implementation for reasons that are specific to that framework, use the System.Xaml XAML readers and XAML writers.

"System.xaml" enthalten, sichern die Implementierung in .NET 4System.Xaml Backing Implementation in .NET 4

XamlReader ist die aufrufbare API-Oberfläche für den XAML-Parser in WPF-Frameworkebene.XamlReader is the callable API surface for the WPF framework-level XAML parser. Führt der gleiche zugrunde liegenden XAML-Parser die XAML zur Laufzeit laden und Analysieren von ASP.NET-Vorlagen für WPF-Anwendungen, die auf .NET Framework 3.0.NET Framework 3.0 und .NET Framework 3,5.NET Framework 3.5.The same underlying XAML parser also performs the run-time XAML loading and parsing for WPF applications that target .NET Framework 3.0.NET Framework 3.0 and .NET Framework 3,5.NET Framework 3.5.

Wenn Sie Anzielen .NET Framework 4.NET Framework 4, die externe API ist identisch, aber Teile der Implementierung auf Grundlage der .NET Framework 4.NET Framework 4 allgemeinen XAML-Implementierung in der System.Xaml-Assembly, die zahlreiche Aspekte der Analyse von XAML technischen und verbessert.If you are targeting .NET Framework 4.NET Framework 4, the external API is the same, but parts of the implementation are built on the .NET Framework 4.NET Framework 4 general XAML implementation in the System.Xaml assembly, which improves many of the technical and reporting aspects of parsing XAML. Zielgruppenadressierung .NET Framework 4.NET Framework 4 unbedingt bringt, einschließlich "System.xaml" als Verweis und Details der Implementierung, wie z. B. "System.xaml" enthalten die gemeldeten Ausnahmen stammen möglicherweise Typen definiert.Targeting .NET Framework 4.NET Framework 4 necessarily entails including System.Xaml as a reference, and details of implementation such as the exceptions reported may come from System.Xaml defined types.

Konstruktoren

XamlReader() XamlReader() XamlReader() XamlReader()

Initialisiert eine neue Instanz der XamlReader-Klasse.Initializes a new instance of the XamlReader class.

Methoden

CancelAsync() CancelAsync() CancelAsync() CancelAsync()

Bricht den aktuellen asynchronen Ladevorgang ab, wenn noch ein asynchroner Ladevorgang aussteht.Aborts the current asynchronous load operation, if there is an asynchronous load operation pending.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
GetWpfSchemaContext() GetWpfSchemaContext() GetWpfSchemaContext() GetWpfSchemaContext()

Gibt ein XamlSchemaContext-Objekt zurück, das die Kontexteinstellungen des WPF-Schemas für einen XamlReader darstellt.Returns a XamlSchemaContext object that represents the WPF schema context settings for a XamlReader.

Load(Stream) Load(Stream) Load(Stream) Load(Stream)

Liest die XAML-Eingabe im angegebenen Stream und gibt ein Object zurück, das das Stammelement der entsprechenden Objektstruktur darstellt.Reads the XAML input in the specified Stream and returns an Object that is the root of the corresponding object tree.

Load(Stream, ParserContext) Load(Stream, ParserContext) Load(Stream, ParserContext) Load(Stream, ParserContext)

Liest die XAML-Eingabe im angegebenen Stream und gibt ein Objekt zurück, das das Stammelement der entsprechenden Objektstruktur darstellt.Reads the XAML input in the specified Stream and returns an object that is the root of the corresponding object tree.

Load(XamlReader) Load(XamlReader) Load(XamlReader) Load(XamlReader)

Liest die XAML-Eingabe über einen bereitgestellten XamlReader und gibt ein Objekt zurück, das das Stammelement der entsprechenden Objektstruktur darstellt.Reads the XAML input through a provided XamlReader and returns an object that is the root of the corresponding object tree.

Load(XmlReader) Load(XmlReader) Load(XmlReader) Load(XmlReader)

Liest die XAML-Eingabe im angegebenen XmlReader und gibt ein Objekt zurück, das das Stammelement der entsprechenden Objektstruktur darstellt.Reads the XAML input in the specified XmlReader and returns an object that is the root of the corresponding object tree.

LoadAsync(Stream) LoadAsync(Stream) LoadAsync(Stream) LoadAsync(Stream)

Liest die XAML-Eingabe im angegebenen Stream und gibt das Stammelement der entsprechenden Objektstruktur zurück.Reads the XAML input in the specified Stream and returns the root of the corresponding object tree.

LoadAsync(Stream, ParserContext) LoadAsync(Stream, ParserContext) LoadAsync(Stream, ParserContext) LoadAsync(Stream, ParserContext)

Liest die XAML-Eingabe im angegebenen Stream und gibt das Stammelement der entsprechenden Objektstruktur zurück.Reads the XAML input in the specified Stream and returns the root of the corresponding object tree.

LoadAsync(XmlReader) LoadAsync(XmlReader) LoadAsync(XmlReader) LoadAsync(XmlReader)

Liest die XAML-Eingabe im angegebenen XmlReader und gibt das Stammelement der entsprechenden Objektstruktur zurück.Reads the XAML input in the specified XmlReader and returns the root of the corresponding object tree.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Parse(String) Parse(String) Parse(String) Parse(String)

Liest die XAML-Eingabe in der angegebenen Textzeichenfolge und gibt ein Objekt zurück, das dem Stammelement des angegebenen entspricht.Reads the XAML input in the specified text string and returns an object that corresponds to the root of the specified markup.

Parse(String, ParserContext) Parse(String, ParserContext) Parse(String, ParserContext) Parse(String, ParserContext)

Liest das XAML-Markup in der angegebenen Textzeichenfolge (mithilfe eines angegebenen ParserContext) und gibt ein Objekt zurück, das dem Stammelement des angegebenen Markups entspricht.Reads the XAML markup in the specified text string (using a specified ParserContext) and returns an object that corresponds to the root of the specified markup.

ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Ereignisse

LoadCompleted LoadCompleted LoadCompleted LoadCompleted

Tritt ein, wenn ein asynchroner Ladevorgang abgeschlossen ist.Occurs when an asynchronous load operation completes.

Gilt für:

Siehe auch