XamlReader XamlReader XamlReader XamlReader Class

Definizione

Legge l'input XAML e crea un oggetto grafico utilizzando il reader XAML predefinito di WPF e un writer di oggetti XAML associato.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
Ereditarietà
XamlReaderXamlReaderXamlReaderXamlReader

Esempi

L'esempio seguente converte un Button in una stringa usando il XamlWriter classe.The following example converts a Button into a string using the XamlWriter class. La stringa viene quindi caricata in un Button usando il metodo statico Load metodo su di XamlReader classe.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)

Commenti

Sincroni Load metodi sono statici, ma asincrona LoadAsync metodi non sono statici e richiedono un'istanza di XamlReader classe da utilizzare.The synchronous Load methods are static, but the asynchronous LoadAsync methods are not static and require an instance of the XamlReader class to use.

L'output del Load metodi è un singolo oggetto, che rappresenta l'oggetto radice di un albero di oggetti creata o un oggetto grafico.The output of the Load methods is a single object, which represents the root object of a created object tree or object graph. Gli oggetti grafici che vengono creati da XamlReader vengono generalmente aggiunti all'albero di oggetti esistenti di un'applicazione WPF in fase di esecuzione.Object graphs that are created by XamlReader are typically added to the existing object tree of a WPF application at run time. In caso contrario, il nuovo oggetto grafico viene considerato disconnesso ai fini del modello dell'applicazione WPF.Otherwise the new object graph is considered disconnected for purposes of the WPF application model. Ciò significa che non esegue il rendering e non può essere a cui si accede utilizzando una delle tecniche di albero di oggetti come applicato a albero a oggetti principale dell'applicazione WPF (ad esempio, le API 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). Per altre informazioni su concetti relativi alla struttura ad albero di oggetti, vedere strutture ad albero in WPF.For more information on object tree concepts, see Trees in WPF.

XamlReader supporta gli scenari principali seguenti:XamlReader supports the following primary scenarios:

  • La clonazione/oggetto factory: Senza altri meccanismi, un tipo di riferimento in genere non può essere incluso in più di una posizione in un albero di oggetti WPF.Cloning/object factory: Without additional mechanisms, a reference type generally cannot be included in more than one position in a WPF object tree. (Esempi di meccanismi aggiuntivi che offrono supporto per la condivisione o riutilizzare in WPF gli oggetti che dipendono Freezable, o il supporto per oggetti comunemente condivisibili, ad esempio Brush cui viene fatto riferimento come un elemento da un ResourceDictionary.) Per clonare un oggetto che è già in albero degli oggetti è possibile serializzare l'oggetto usando 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. Utilizzare quindi la stringa serializzata come input per una chiamata a Load, con un flusso o XmlReader come intermediario.You then use the serialized string as input for a call to Load, with a stream or XmlReader as an intermediary.

  • Costruzione di oggetti in base alle informazioni di just-in-time: Spesso esistono altri modi per avere un'associazione tardiva o fornita dall'utente modificano lo stato degli oggetti esistenti.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. Ad esempio si potrebbe usare lo stesso valore per impostare più di una proprietà oppure usare il data binding.For example you could use the same value to set more than one property, or use data binding. Ma se si dispone di uno scenario in cui anche il tipo di oggetto da creare è determinabile solo in fase di esecuzione o l'intervento dell'utente, quindi la creazione di un oggetto di questo tipo tramite la compilazione di una stringa per Load input è spesso una tecnica utile.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.

  • Usando le tecniche di risorse esistenti: Il Stream tipo viene usato spesso in altri framework o tecnologie per il trasferimento dei dati o oggetti attraverso i limiti dell'applicazione o per situazioni analoghe.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. È quindi possibile usare il Stream tecniche per archiviare o ottenere i dati in formato XAML utilizzato alla fine per creare un oggetto come parte dell'applicazione.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.

  • Documenti statici: L'applicazione potrebbe caricare documenti XPS locali o scaricati per l'inclusione in un albero di oggetti dell'applicazione WPF e dell'interfaccia utente.Fixed documents: Your application might load local or downloaded XPS documents for inclusion in a WPF application object tree and UI.

Nota

In alcuni casi questa documentazione descrive un oggetto grafico, a differenza di un albero di oggetti.This documentation sometimes describes an object graph, as opposed to an object tree. Una relazione padre-figlio strict non sempre esiste in relazioni tra oggetti la fase di esecuzione di un'applicazione WPF fase di esecuzione, in modo che un oggetto grafico è una terminologia più ampiamente applicabile.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. Tuttavia, poiché WPF include anche due API di concettualizzazione albero diverso (LogicalTreeHelper, VisualTreeHelper) la metafora dell'albero è comunque applicabile alla maggior parte dei casi reali 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. Dalla prospettiva del linguaggio XAML, tuttavia, l'oggetto grafico è spesso il modo migliore per pensare a come gli oggetti vengono creati da XAML, poiché il linguaggio XAML stesso non specifica necessariamente le metodologie di classe helper che forniscano le relazioni più in un struttura ad albero nuovamente.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.

Sicurezza dall'accesso di codice e XAML Loose XamlReaderCode Access Security, Loose XAML, and XamlReader

XAML è un linguaggio di markup che rappresenta direttamente la creazione di istanze di oggetti e la relativa esecuzione.XAML is a markup language that directly represents object instantiation and execution. Gli elementi creati in XAML, pertanto, hanno la stessa capacità di interagire con risorse di sistema (quali accesso di rete e IO file system) del codice generato equivalente.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 supporta il .NET.NET framework di sicurezza Sicurezza per l'accesso al codice (CAS, Code Access Security)Code Access Security (CAS).supports the .NET.NET security framework Sicurezza per l'accesso al codice (CAS, Code Access Security)Code Access Security (CAS). Di conseguenza, il contenuto WPFWPF in esecuzione nell'area Internet dispone di autorizzazioni di esecuzione ridotte.This means that WPFWPF content running in the internet zone has reduced execution permissions. In questa area Internet vengono in genere eseguiti il codice "XAML separato", ovvero pagine di XAML non compilato interpretato in fase di caricamento da parte di un visualizzatore XAML, e l'applicazione browser XAML (XBAP)XAML browser application (XBAP), che usano lo stesso set di autorizzazioni."Loose XAML" (pages of noncompiled XAML interpreted at load time by a XAML viewer) and applicazione browser XAML (XBAP)XAML browser application (XBAP) are usually run in this internet zone and use the same permission set. Il codice XAML caricato in un'applicazione completamente attendibile, tuttavia, dispone dello stesso accesso alle risorse di sistema dell'applicazione host.However, XAML loaded in to a fully trusted application has the same access to the system resources as the hosting application does. Per altre informazioni, vedere Sicurezza con attendibilità parziale in WPF.For more information, see WPF Partial Trust Security.

Le implicazioni di queste istruzioni per XamlReader è che la progettazione dell'applicazione deve prendere decisioni sull'attendibilità di XAML si decide di carico.The implications of these statements for XamlReader is that your application design must make trust decisions about the XAML you decide to load. Se si sta caricando XAML non attendibile, è consigliabile implementare il proprio tecnica sandboxing per la procedura per caricare l'oggetto grafico risultante.If you are loading XAML that is not trusted, consider implementing your own sandboxing technique for how you load the resulting object graph.

XamlReader può anche essere chiamato da codice parzialmente attendibile.XamlReader can also be called by partial trust code. In questo caso, area Internet viene applicato per la sicurezza dall'accesso di codice.In this case, Internet security zone is applied for code access security. Se qualsiasi elemento in XAML il caricamento non è valida con area di sicurezza di Internet, viene generata un'eccezione di analisi XAML.If anything in the loaded XAML is invalid under Internet security zone, a XAML parse exception is thrown. Nella sezione XBAP e altri casi che vengono parzialmente attendibile a livello di piattaforma, in cui XamlReader fa parte dell'esecuzione, ottenere lo stesso comportamento di eccezione come con le chiamate esplicite parzialmente attendibili.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.

XAML di WPF, i lettori o writer XAML e il controllo delle versioni del linguaggio XAMLWPF XAML, XAML Readers/Writers, and XAML Language Versioning

XAML2009 include le funzionalità del linguaggio, ad esempio X:Reference e X:FactoryMethod.XAML2009 includes language features such as x:Reference and x:FactoryMethod. È possibile usare le firme dei Load o Parse caricamento XAML che Usa queste funzionalità.You can use signatures of Load or Parse to load XAML that uses these features. Tuttavia, le funzionalità del linguaggio non sono supportati per XAML che deve essere compilato markup (ad esempio XAML per il pagina azione in un'applicazione WPF o qualsiasi XAML che coinvolge l'attività di compilazione del markup nelle operazioni di compilazione di compilazione).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).

I tipi di WPF e la tecnologia WPF supportano in genere i concetti che si basano sull'accesso a elementi interni WPF.WPF types and the WPF technology in general support concepts that rely on access to WPF internals. Ad esempio, come WPF implementa le proprietà di dipendenza si basa su tecniche interne per la ricerca efficiente di tipi o membri.For instance, how WPF implements dependency properties relies on internal techniques for efficient type-member lookup. Accesso a questi elementi interni è abilitata per il XAML la lettura e la scrittura delle API disponibili in XamlWriter e XamlReader dal System.Windows.Markup dello spazio dei nomi e nell'assembly PresentationFramework.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. Tuttavia, i lettori di basso livello XAML e writer XAML dall'assembly System. XAML (classi di basano System.Xaml.XamlReader, System.Xaml.XamlWriter) non sono disponibili per gli elementi interni WPF.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. Non è presente alcuna dipendenza da System. XAML a qualsiasi assembly specifiche di WPF.There is no dependency from System.Xaml to any WPF-specific assembly. Senza accesso per gli elementi interni WPF, writers e readers System. XAML in modo corretto non è possibile caricare o salvare WPF tutti i tipi o i tipi basano su tipi WPF.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. In particolare, System. XAML lettori e writer non comprendere concetti, ad esempio la proprietà di dipendenza WPF archivio di proprietà o tutte le specifiche del modo in cui WPF utilizza stili, nei dizionari risorse e modelli sottostante.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. Pertanto è necessario effettuare una scelta:Therefore you have a choice to make:

  • Se si caricano i tipi di WPF e/o si usa XAML nel modulo BAML in alcun modo, utilizzare i lettori di PresentationFramework XAML e writer XAML.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.

  • Se non si affidarsi a tutti i tipi WPF o il modulo BAML di XAML e non si usa di un'altra tecnologia specifica reader XAML o implementazione del writer XAML per motivi specifici per tale framework, usare i lettori di XAML System. XAML e writer XAML.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 in .NET 4 implementazione di supportoSystem.Xaml Backing Implementation in .NET 4

XamlReader è la superficie API disponibile per il parser XAML a livello di framework WPF.XamlReader is the callable API surface for the WPF framework-level XAML parser. Il parser XAML sottostante stesso esegue inoltre il XAML in fase di esecuzione, il caricamento e l'analisi per le applicazioni WPF destinate .NET Framework 3.0.NET Framework 3.0 e .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.

Se la destinazione .NET Framework 4.NET Framework 4, l'API esterna è lo stesso, ma le parti dell'implementazione si basano sul .NET Framework 4.NET Framework 4 generale implementazione XAML nell'assembly System. XAML, che migliora molti aspetti tecnici e creazione di report di analisi XAML.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. Targeting .NET Framework 4.NET Framework 4 necessariamente i tipi definiti dal comporta inclusi System. XAML come riferimento e i dettagli dell'implementazione, ad esempio le eccezioni segnalate possono provenire da System. Xaml.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.

Costruttori

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

Inizializza una nuova istanza della classe XamlReader.Initializes a new instance of the XamlReader class.

Metodi

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

Interrompe l'operazione di caricamento asincrona corrente, se ne è presente una in sospeso.Aborts the current asynchronous load operation, if there is an asynchronous load operation pending.

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

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

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

Funge da funzione hash predefinita.Serves as the default hash function.

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

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

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

Restituisce un oggetto XamlSchemaContext che rappresenta le impostazioni del contesto dello schema WPF per un XamlReader.Returns a XamlSchemaContext object that represents the WPF schema context settings for a XamlReader.

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

Legge l'input XAML nell'oggetto Stream specificato e restituisce un Object che sarà la radice della struttura ad albero di oggetti corrispondente.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)

Legge l'input XAML nell'oggetto Stream specificato e restituisce un oggetto che sarà la radice della struttura ad albero di oggetti corrispondente.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)

Legge l'input XAML tramite un oggetto XamlReader specificato e restituisce un oggetto che sarà la radice della struttura ad albero di oggetti corrispondente.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)

Legge l'input XAML nell'oggetto XmlReader specificato e restituisce un oggetto che sarà la radice della struttura ad albero di oggetti corrispondente.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)

Legge l'input XAML nell'oggetto Stream specificato e restituisce la radice della struttura ad albero di oggetti corrispondente.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)

Legge l'input XAML nell'oggetto Stream specificato e restituisce la radice della struttura ad albero di oggetti corrispondente.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)

Legge l'input XAML nell'oggetto XmlReader specificato e restituisce la radice della struttura ad albero di oggetti corrispondente.Reads the XAML input in the specified XmlReader and returns the root of the corresponding object tree.

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

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Legge l'input XAML nella stringa di testo specificata e restituisce un oggetto corrispondente alla radice del markup specificato.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)

Legge il markup XAML nella stringa di testo specificata, utilizzando un oggetto ParserContext specificato, e restituisce un oggetto corrispondente alla radice del markup specificato.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()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Eventi

LoadCompleted LoadCompleted LoadCompleted LoadCompleted

Si verifica al completamento di un'operazione di caricamento asincrona.Occurs when an asynchronous load operation completes.

Si applica a

Vedi anche