Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Classe XamlReader

Legge l'input XAML e viene creato un oggetto grafico, utilizzando il reader XAML predefinito di WPF e di un writer di oggetti XAML associato.

System.Object
  System.Windows.Markup.XamlReader

Spazio dei nomi:  System.Windows.Markup
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS per XAML: http://schemas.microsoft.com/winfx/2006/xaml
public class XamlReader

Il tipo XamlReader espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoXamlReaderInizializza una nuova istanza di XamlReader classe.
In alto
  NomeDescrizione
Metodo pubblicoCancelAsyncInterrompe l'operazione asincrona di caricamento corrente, se c " è un'operazione di caricamento asincrono in corso.
Metodo pubblicoEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoGetHashCodeFunge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoMembro staticoGetWpfSchemaContextRestituisce un oggetto XamlSchemaContext oggetto che rappresenta le impostazioni del contesto dello schema WPF per un oggetto XamlReader.
Metodo pubblicoMembro staticoLoad(Stream)Legge l'input XAML in specificato Stream e restituisce Object questa è la radice della struttura ad albero di oggetti corrispondente.
Metodo pubblicoMembro staticoLoad(XamlReader)Legge l'input XAML con fornito XamlReader e restituisce un oggetto che rappresenta la radice della struttura ad albero di oggetti corrispondente.
Metodo pubblicoMembro staticoLoad(XmlReader)Legge l'input XAML in specificato XmlReader e restituisce un oggetto che rappresenta la radice della struttura ad albero di oggetti corrispondente.
Metodo pubblicoMembro staticoLoad(Stream, ParserContext)Legge l'input XAML in specificato Stream e restituisce un oggetto che rappresenta la radice della struttura ad albero di oggetti corrispondente.
Metodo pubblicoLoadAsync(Stream)Legge l'input XAML in specificato Stream e restituisce la radice della struttura ad albero di oggetti corrispondente.
Metodo pubblicoLoadAsync(XmlReader)Legge l'input XAML in specificato XmlReader e restituisce la radice della struttura ad albero di oggetti corrispondente.
Metodo pubblicoLoadAsync(Stream, ParserContext)Legge l'input XAML in specificato Stream e restituisce la radice della struttura ad albero di oggetti corrispondente.
Metodo protettoMemberwiseCloneConsente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoMembro staticoParse(String)Legge l'input XAML nella stringa di testo specificato e restituisce un oggetto che corrisponde alla radice del markup specificato.
Metodo pubblicoMembro staticoParse(String, ParserContext)Legge il markup XAML nella stringa di testo specificata (utilizzando un oggetto specificato ParserContext) e restituisce un oggetto che corrisponde alla radice del markup specificato.
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto
  NomeDescrizione
Evento pubblicoLoadCompletedSi verifica quando un'operazione di caricamento asincrona.
In alto

La forma sincrona Load i metodi sono statici, ma gli asincroni LoadAsync i metodi non sono statici e non richiedono un'istanza di XamlReader classe da utilizzare.

L'output di Load i metodi di un singolo oggetto, che rappresenta l'oggetto radice di una struttura ad albero di oggetti o di un oggetto grafico creato. Oggetti grafici creati da XamlReader in genere vengono aggiunti all'albero a oggetti esistente di un'applicazione WPF in fase di esecuzione. In caso contrario il nuovo oggetto grafico viene considerato disconnesso allo scopo del modello di applicazione WPF. Ciò significa che non esegue il rendering e non può essere eseguito utilizzando una delle tecniche della struttura ad albero di oggetti per la struttura ad albero di oggetti principale dell'applicazione WPF, ad esempio le API FindName, LogicalTreeHelper, VisualTreeHelper). Per ulteriori informazioni sui concetti di struttura ad albero di oggetti, vedere Strutture ad albero in WPF.

XamlReader supporta i seguenti scenari principali:

  • Factory oggetto o duplicare: Senza meccanismi aggiuntivi, un tipo di riferimento non può essere incluso in genere in più posizioni in una struttura ad albero di oggetti WPF. (Esempi dei meccanismi aggiuntivi che offrono supporto per condividere o il riutilizzo in WPF sono gli oggetti basati su Freezable, o il supporto per gli oggetti comunemente condivisibili come Brush ciò è fatto riferimento come elemento da un oggetto ResourceDictionary). Un modo per duplicare un oggetto già presente nella struttura ad albero di oggetti è di serializzare l'oggetto utilizzando XamlWriter.Save. Utilizzare quindi la stringa serializzata come input per una chiamata a Load, con un flusso o XmlReader intermediaria.

  • Generando oggetti basati sulle informazioni JIT: Vi sono spesso altri modi di disporre di associazione tardiva o la modifica fornita dall'utente di input lo stato di esistenza oggetti. È possibile ad esempio utilizzare lo stesso valore per impostare più proprietà, o utilizzare l'associazione dati. Ma se è uno scenario in cui anche il tipo di oggetto creare solo determinabile in fase di esecuzione o con un'interazione, quindi creando un oggetto compilando una stringa per Load l'input viene spesso una tecnica utile.

  • Utilizzando le tecniche esistenti delle risorse: Stream il tipo viene utilizzato spesso in altri framework o tecnologie per i dati oppure oggetti di trasferimento oltre i limiti di applicazione o per le situazioni simili. È quindi possibile utilizzare Stream le tecniche da archiviare o per XAML-hanno formattato i dati che verrà utilizzato per creare un oggetto come parte dell'applicazione.

  • Documenti statici: L'applicazione potrebbe caricare il locale o i documenti scaricati XPS per l'inclusione in una struttura ad albero e nell'interfaccia utente dell'applicazione WPF.

NotaNota

Questa documentazione talvolta viene descritto un oggetto grafico, in contrapposizione a una struttura ad albero di oggetti. Una relazione rigida padre-figlio non esiste sempre le relazioni tra oggetti runtime di un'applicazione di runtime WPF, pertanto un oggetto grafico è più largamente una terminologia applicabile. Tuttavia, poiché WPF include inoltre la concettualizzazione diverso le API della struttura ad albero due (LogicalTreeHelper, VisualTreeHelper) la metafora di struttura ad albero è applicato in modo adeguato alla maggior parte dei casi realistici in WPF. Dalla prospettiva del linguaggio XAML tuttavia, l'oggetto grafico rappresenta spesso la migliore per considerare il modo in cui gli oggetti vengono creati da XAML, poiché il linguaggio stesso XAML non necessariamente specifica le metodologie della classe di supporto che introdotti le relazioni in una struttura ad albero di nuovo.

Sicurezza per l'accesso al codice, XAML separato e XamlReader

XAML è un linguaggio di markup che rappresenta direttamente la creazione di istanze e l'esecuzione dell'oggetto. Di conseguenza, gli elementi creati in XAML hanno la stessa capacità di interagire con le risorse di sistema (accesso alla rete, e IO file system, ad esempio) del codice generato equivalente.

WPF supporta .NET framework di sicurezza Sicurezza per l'accesso al codice (CAS, Code Access Security). Ciò significa WPF il funzionamento di contenuto dell'area Internet dispone di autorizzazioni di esecuzione. “ XAML separato„ (pagine XAML a interpretate in fase di caricamento da un visualizzatore XAML) e applicazione browser XAML (XBAP) in genere vengono eseguiti in questa area Internet e utilizzano lo stesso set di autorizzazioni. Tuttavia, il codice XAML caricato in un'applicazione completamente attendibile ha lo stesso accesso alle risorse di sistema dell'applicazione host. Per ulteriori informazioni, vedere Sicurezza con attendibilità parziale in WPF.

Le implicazioni di queste istruzioni per XamlReader è quello che il progetto dell'applicazione deve prendere decisioni sull'attendibilità di XAML si decide di caricare. Se si sta caricando XAML non attendibile, considerare l'implementazione di della tecnica di sandboxing per come caricare l'oggetto grafico risultante.

XamlReader può essere chiamato da codice parzialmente attendibile. In questo caso, l'area Internet security si applica alla sicurezza per l'accesso di codice. Se si è in XAML caricato non è valido nell'area Internet security, viene generata un'eccezione di analisi XAML viene generata un'eccezione. In applicazioni XBAP e di altri casi che sono parzialmente attendibili a livello piattaforma, dove XamlReader fa parte dell'esecuzione, si ottiene lo stesso comportamento delle eccezioni con chiamate parzialmente attendibili esplicite.

XAML WPF, reader XAML o writer e controllo delle versioni del linguaggio XAML

XAML2009 include funzionalità del linguaggio come x: riferimento e x: FactoryMethod. È possibile utilizzare le firme di Load o Parse per caricare XAML che utilizza queste funzionalità. Tuttavia, le funzionalità del linguaggio non sono supportate per XAML che deve essere markup compilato (come XAML per pagina l'operazione di compilazione in un'applicazione WPF, o tutto il codice che include il markup compila l'attività nelle operazioni di compilazione).

Tipi WPF e la tecnologia WPF nei concetti generali di supporto che si basano sull'accesso ai internals WPF. Ad esempio, ad esempio le proprietà di dipendenza di implementazione WPF si basa sulle tecniche interne di ricerca efficiente del membro del tipo. Per accedere a questi internals è attivato dalla lettura di XAML e dalla scrittura API disponibili in XamlWriter e XamlReader da System.Windows.Markup spazio dei nomi e assembly PresentationFramework. Tuttavia, i reader XAML di livello inferiore e writer XAML dall'assembly System.Xaml (classi basate su System.Xaml.XamlReader, System.Xaml.XamlWriter) non avere accesso a internals WPF. Non esiste alcuna dipendenza da System.Xaml a qualsiasi assembly WPF-specifico. Senza accesso ai internals WPF, reader e writer di System.Xaml non possono correttamente caricare o salvare tutti i tipi WPF, o i tipi basati sui tipi WPF. In particolare, i reader di System.Xaml e writer non siano concetti quali la proprietà di dipendenza WPF che supporta archiviare la proprietà, o tutte le specifiche di WPF vengono utilizzati gli stili, nei dizionari risorse e modelli. Di conseguenza è possibile scegliere da fare:

  • Se si sta caricando i tipi WPF e/o si utilizza XAML nel form BAML in alcun modo, utilizzare i reader XAML PresentationFramework e writer XAML.

  • Se non si basa su alcuni tipi WPF o nel form BALM di XAML e non si utilizza il reader XAML specifico o l'implementazione del writer XAML di un'altra tecnologia per i motivi specifico del framework, utilizzare i reader XAML di System.Xaml e writer XAML.

Implementazione dell'assembly System.Xaml in .NET 4

XamlReader rappresenta la superficie chiamabile di API per il parser livello di Framework WPF XAML. Lo stesso parser sottostante XAML esegue anche il caricamento e la tracciatura di runtime XAML per le applicazioni WPF che riguardano .NET Framework 3.0 e .NET Framework 3.5.

Se si intende utilizzare .NET Framework 4, le API esterne è lo stesso, ma le parti dell'implementazione vengono compilate in .NET Framework 4 implementazione XAML generale nell'assembly System.Xaml, che migliora molti degli aspetti di segnalazione e tecnici di analisi XAML. Il routing .NET Framework 4 comporta necessariamente inclusi System.Xaml come riferimento e i dettagli dell'implementazione come le eccezioni riportate possono derivare da tipi definiti nell'assembly System.Xaml.

Nell'esempio converte un oggetto Button in una stringa utilizzando il XamlWriter classe. La stringa viene quindi caricato in un oggetto Button utilizzo di quello statico Load metodo su XamlReader classe.


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


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
© 2013 Microsoft. Tutti i diritti riservati.