Servizi XAMLXAML Services

In questo argomento vengono descritte le funzionalità di un set di tecnologie noto come XAML di .NET Framework di servizi.This topic describes the capabilities of a technology set known as .NET Framework XAML Services. La maggior parte dei servizi e le API descritte si trovano nell'assembly System. XAML, che è un assembly è stato introdotto con la .NET Framework 4.NET Framework 4 set di assembly di .NET core.The majority of the services and APIs described are located in the assembly System.Xaml, which is an assembly introduced with the .NET Framework 4.NET Framework 4 set of .NET core assemblies. I servizi includono lettori e writer, le classi dello schema e supporto dello schema, le factory, assegnazione di attributi di classi, supporto intrinseco del linguaggio XAML e altre funzionalità del linguaggio XAML.Services include readers and writers, schema classes and schema support, factories, attributing of classes, XAML language intrinsic support, and other XAML language features.

Informazioni sulla documentazioneAbout This Documentation

Documentazione concettuale per i servizi XAML di .NET Framework presuppone che si ha esperienza con il linguaggio XAML e il modo in cui sia valido per un framework specifico, ad esempio Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) Windows Workflow Foundation o una caratteristica tecnologica specifica area, ad esempio la personalizzazione di compilazione le funzionalità Microsoft.Build.Framework.XamlTypes.Conceptual documentation for .NET Framework XAML Services assumes that you have previous experience with the XAML language and how it might apply to a specific framework, for example Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) or Windows Workflow Foundation, or a specific technology feature area, for example the build customization features in Microsoft.Build.Framework.XamlTypes. Questa documentazione non tenta di spiegare i concetti di base di XAML come linguaggio di markup, terminologia della sintassi XAML o altro materiale introduttivo.This documentation does not attempt to explain the basics of XAML as a markup language, XAML syntax terminology, or other introductory material. Al contrario, questa documentazione è incentrata sull'utilizzo specifico di servizi XAML di .NET Framework abilitati nella libreria dell'assembly System. Xaml.Instead, this documentation focuses on specifically using the .NET Framework XAML Services that are enabled in the System.Xaml assembly library. La maggior parte di queste API sono valide per scenari di integrazione di linguaggio XAML e l'estensibilità.Most of these APIs are for scenarios of XAML language integration and extensibility. Ciò potrebbe includere le seguenti:This might include any of the following:

  • Estensione delle funzionalità della base reader XAML o i writer XAML (elaborazione direttamente il flusso del nodo XAML, derivare la propria reader XAML o writer XAML).Extending the capabilities of the base XAML readers or XAML writers (processing the XAML node stream directly; deriving your own XAML reader or XAML writer).

  • Definizione di tipi personalizzati utilizzabili con XAML che non hanno dipendenze framework specifici e assegnando i tipi per comunicare loro XAML digitare le caratteristiche del sistema di servizi XAML di .NET Framework.Defining XAML-usable custom types that do not have specific framework dependencies, and attributing the types to convey their XAML type system characteristics to .NET Framework XAML Services.

  • Hosting di reader XAML o writer XAML come un componente di un'applicazione, ad esempio una finestra di progettazione visiva o editor interattivo per le origini di markup XAML.Hosting XAML readers or XAML writers as a component of an application, such as a visual designer or interactive editor for XAML markup sources.

  • Scrittura di convertitori di valori XAML (estensioni di markup, i convertitori di tipi per i tipi personalizzati).Writing XAML value converters (markup extensions; type converters for custom types).

  • Definizione di un contesto dello schema XAML personalizzato (tramite tecniche alternative di caricamento di assembly per le origini di tipo sottostante; utilizzando tecniche di ricerca di tipi noti anziché sempre reflection di assembly; utilizzando i concetti di assembly caricati che non utilizzano CLR AppDomain e il modello di sicurezza associato).Defining a custom XAML schema context (using alternate assembly-loading techniques for backing type sources; using known-types lookup techniques instead of always reflecting assemblies; using loaded assembly concepts that do not use the CLR AppDomain and its associated security model).

  • Estendere il sistema di tipi XAML base.Extending the base XAML type system.

  • Utilizzo di Lookup o Invoker tecniche per influenzare il codice XAML digitare system e modalità di valutazione dei tipi di supporto.Using the Lookup or Invoker techniques to influence the XAML type system and how type backings are evaluated.

Se sta cercando materiale introduttivo su XAML come linguaggio, è possibile provare a Panoramica di XAML (WPF).If you are looking for introductory material on XAML as a language, you might try XAML Overview (WPF). Tale argomento sono illustrate XAML per un gruppo di destinatari che è una novità per Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) e anche all'utilizzo di markup XAML e funzionalità del linguaggio XAML.That topic discusses XAML for an audience that is new both to Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) and also to using XAML markup and XAML language features. Un altro documento utile è il materiale introduttivo nel specifiche del linguaggio XAML.Another useful document is the introductory material in the XAML language specification.

Servizi XAML di .NET framework e System. XAML nell'architettura di .NET.NET Framework XAML Services and System.Xaml in the .NET Architecture

Nelle versioni precedenti di Microsoft .NET Framework, il supporto per funzionalità del linguaggio XAML è stato implementato dal framework che si basa su Microsoft .NET Framework (Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), Windows Workflow Foundation e Windows Communication Foundation (WCF)) e pertanto variare il relativo comportamento e l'API usata a seconda del framework specifico si utilizzassero.In previous versions of Microsoft .NET Framework, support for XAML language features was implemented by frameworks that built on Microsoft .NET Framework (Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), Windows Workflow Foundation and Windows Communication Foundation (WCF)), and therefore varied in its behavior and the API used depending on which specific framework you were using. Questo incluso il codice XAML parser e il relativo oggetto grafico meccanismo di creazione, intrinseci del linguaggio XAML, supporto della serializzazione e così via.This included the XAML parser and its object graph creation mechanism, XAML language intrinsics, serialization support, and so on.

In .NET Framework 4.NET Framework 4, servizi XAML di .NET Framework e l'assembly System. Xaml definiscono la maggior parte degli elementi necessari per il supporto delle funzionalità del linguaggio XAML.In .NET Framework 4.NET Framework 4, .NET Framework XAML Services and the System.Xaml assembly define much of what is needed for supporting XAML language features. Questo include classi di base per i reader XAML e writer XAML.This includes base classes for XAML readers and XAML writers. La funzionalità più importante aggiunta ai servizi XAML .NET Framework che non era presente in una qualsiasi delle implementazioni specifiche del framework XAML è una rappresentazione del sistema di tipo per il codice XAML.The most important feature added to .NET Framework XAML Services that was not present in any of the framework-specific XAML implementations is a type system representation for XAML. La rappresentazione del sistema di tipo XAML è presentato in orientata agli oggetti in modo che si concentra sulle funzionalità di XAML senza le dipendenze sulle funzionalità specifiche del Framework.The type system representation presents XAML in an object-oriented way that centers on XAML capabilities without taking dependencies on specific capabilities of frameworks.

Sistema di tipi XAML non è limitato dal modulo di markup o in fase di esecuzione specifiche dell'origine XAML; né è limitata da qualsiasi sistema di tipi di supporto specifici.The XAML type system is not limited by the markup form or run-time specifics of the XAML origin; nor is it limited by any specific backing type system. Sistema di tipi XAML include rappresentazioni di oggetti per i tipi, membri, contesti dello schema XAML, i concetti di livello di XML e altri concetti del linguaggio XAML o intrinseci XAML.The XAML type system includes object representations for types, members, XAML schema contexts, XML-level concepts, and other XAML language concepts or XAML intrinsics. Utilizzo o l'estensione di sistema di tipi XAML rende possibile il derivino da classi quali reader XAML e writer XAML ed estendere le funzionalità delle rappresentazioni XAML in specifiche funzionalità abilitate da una struttura, una tecnologia o un'applicazione che utilizza o genera XAML.Using or extending the XAML type system makes it possible to derive from classes like XAML readers and XAML writers, and extend the functionality of XAML representations into specific features enabled by a framework, a technology, or an application that consumes or emits XAML. Il concetto di un contesto dello schema XAML consente operazioni di scrittura pratiche oggetto grafico in base alla combinazione di un'implementazione del writer di oggetti XAML, sistema di tipi di supporto di una tecnologia, comunicato tramite le informazioni sull'assembly nel contesto e il nodo XAML origine.The concept of a XAML schema context enables practical object graph write operations from the combination of a XAML object writer implementation, a technology's backing type system as communicated through assembly information in the context, and the XAML node source. Per ulteriori informazioni sul concetto dello schema XAML.For more information on the XAML schema concept. vedere predefinito contesto dello Schema XAML e il contesto dello Schema XAML WPF.see Default XAML Schema Context and WPF XAML Schema Context.

Flussi di nodi XAML reader XAML e writer XAMLXAML Node Streams, XAML Readers, and XAML Writers

Per comprendere il ruolo svolto nella relazione tra il linguaggio XAML e le tecnologie specifiche che usano XAML come linguaggio di servizi XAML di .NET Framework, è utile comprendere il concetto di flusso di nodi XAML e come tale concetto forme dell'API e terminologia.To understand the role that .NET Framework XAML Services plays in the relationship between the XAML language and specific technologies that use XAML as a language, it is helpful to understand the concept of a XAML node stream and how that concept shapes the API and terminology. Flusso di nodi XAML è un concettuale intermedio tra una rappresentazione del linguaggio XAML e l'oggetto grafico che rappresenta il codice XAML o che definisce.The XAML node stream is a conceptual intermediate between a XAML language representation and the object graph that the XAML represents or defines.

  • Un reader XAML è un'entità che l'elaborazione di XAML in diversi formati e produce un flusso di nodi XAML.A XAML reader is an entity that processes XAML in some form, and produces a XAML node stream. Nell'API di reader XAML è rappresentato dalla classe di base XamlReader.In the API, a XAML reader is represented by the base class XamlReader.

  • Un writer XAML è un'entità che elabora un flusso del nodo XAML e produce un altro elemento.A XAML writer is an entity that processes a XAML node stream and produces something else. Nell'API, un writer XAML è rappresentato dalla classe di base XamlWriter.In the API, a XAML writer is represented by the base class XamlWriter.

I due scenari più comuni che coinvolgono XAML sono il caricamento di XAML per creare un'istanza di un oggetto grafico e il salvataggio di un oggetto grafico da un'applicazione o lo strumento e che produce una rappresentazione XAML (in genere in formato di markup salvato come file di testo).The two most common scenarios involving XAML are loading XAML to instantiate an object graph, and saving an object graph from an application or tool and producing a XAML representation (typically in markup form saved as text file). Il caricamento di XAML e la creazione di un oggetto grafico viene spesso definito in questa documentazione come percorso di caricamento.Loading XAML and creating an object graph is often referred to in this documentation as the load path. Il salvataggio o la serializzazione di un oggetto grafico esistente in XAML viene spesso definito in questa documentazione Salva percorso.Saving or serializing an existing object graph to XAML is often referred to in this documentation as the save path.

Il tipo più comune di percorso di caricamento può essere descritta come segue:The most common type of load path can be described as follows:

  • Iniziare con una rappresentazione XAML, in formato XML con codifica UTF- e salvato come file di testo.Start with a XAML representation, in UTF-encoded XML format and saved as a text file.

  • Caricamento in XamlXmlReader.Load that XAML into XamlXmlReader. XamlXmlReader è un XamlReader sottoclasse.XamlXmlReader is a XamlReader subclass.

  • Il risultato è un flusso del nodo XAML.The result is a XAML node stream. È possibile accedere ai singoli nodi del flusso di nodi XAML tramite XamlXmlReader / XamlReader API.You can access individual nodes of the XAML node stream using XamlXmlReader / XamlReader API. In questo caso l'operazione più comune è di avanzare il flusso del nodo XAML, l'elaborazione di ogni nodo con un record"corrente" metafora.The most typical operation here is to advance through the XAML node stream, processing each node using a "current record" metaphor.

  • Passare i nodi risultanti dal flusso del nodo XAML da un XamlObjectWriter API.Pass the resulting nodes from the XAML node stream to a XamlObjectWriter API. XamlObjectWriter è un XamlWriter sottoclasse.XamlObjectWriter is a XamlWriter subclass.

  • Il XamlObjectWriter scrive un oggetto grafico, un oggetto alla volta, in base a stato di avanzamento tramite il flusso del nodo XAML di origine.The XamlObjectWriter writes an object graph, one object at a time, in accordance to progress through the source XAML node stream. Questa operazione viene eseguita con l'assistenza di un contesto dello schema XAML e un'implementazione che può accedere gli assembly e tipi di un sistema di tipi di backup e di framework.This is done with the assistance of a XAML schema context and an implementation that can access the assemblies and types of a backing type system and framework.

  • Chiamare Result alla fine del flusso del nodo XAML per ottenere l'oggetto radice dell'oggetto grafico.Call Result at the end of the XAML node stream to obtain the root object of the object graph.

Il tipo più comune di percorso di salvataggio può essere descritta come segue:The most common type of save path can be described as follows:

  • Iniziare con l'oggetto grafico di un intero runtime di applicazione, il contenuto dell'interfaccia utente e lo stato di una fase di esecuzione oppure un segmento più piccolo di rappresentazione dell'oggetto globale dell'applicazione in fase di esecuzione.Start with the object graph of an entire application run time, the UI content and state of a run time, or a smaller segment of an overall application's object representation at run time.

  • Da un oggetto di avvio logico, ad esempio una radice dell'applicazione o la radice del documento, caricare gli oggetti in XamlObjectReader.From a logical start object, such as an application root or document root, load the objects into XamlObjectReader. XamlObjectReader è un XamlReader sottoclasse.XamlObjectReader is a XamlReader subclass.

  • Il risultato è un flusso del nodo XAML.The result is a XAML node stream. È possibile accedere ai singoli nodi del flusso di nodi XAML tramite XamlObjectReader e XamlReader API.You can access individual nodes of the XAML node stream using XamlObjectReader and XamlReader API. In questo caso l'operazione più comune è di avanzare il flusso del nodo XAML, l'elaborazione di ogni nodo con un record"corrente" metafora.The most typical operation here is to advance through the XAML node stream, processing each node using a "current record" metaphor.

  • Passare i nodi risultanti dal flusso del nodo XAML da un XamlXmlWriter API.Pass the resulting nodes from the XAML node stream to a XamlXmlWriter API. XamlXmlWriter è un XamlWriter sottoclasse.XamlXmlWriter is a XamlWriter subclass.

  • Il XamlXmlWriter scrive XAML in un UTF XML codifica.The XamlXmlWriter writes XAML in an XML UTF encoding. È possibile salvare questo come un file di testo, come un flusso o in altri moduli.You can save this as a text file, as a stream, or in other forms.

  • Chiamare Flush per ottenere l'output finale.Call Flush to obtain the final output.

Per ulteriori informazioni sui concetti di flusso di nodi XAML, vedere concetti e delle strutture di flusso di nodi XAML comprensione.For more information about XAML node stream concepts, see Understanding XAML Node Stream Structures and Concepts.

La classe XamlServicesThe XamlServices Class

Non è sempre necessario gestire un flusso del nodo XAML.It is not always necessary to deal with a XAML node stream. Se si desidera un percorso di caricamento di base o un percorso di salvataggio di base, è possibile utilizzare l'API di XamlServices classe.If you want a basic load path or a basic save path, you can use APIs in the XamlServices class.

  • Diverse firme di Load implementano un percorso di caricamento.Various signatures of Load implement a load path. È possibile caricare un file o un flusso o caricare un XmlReader, TextReader o XamlReader che esegue il wrapping dell'input XAML tramite caricamento con API che del lettore.You can either load a file or stream, or can load an XmlReader, TextReader or XamlReader that wrap your XAML input by loading with that reader's APIs.

  • Diverse firme di Save salvare un oggetto grafico e producono l'output come flusso, file, o XmlWriter / TextWriter istanza.Various signatures of Save save an object graph and produce output as a stream, file, or XmlWriter/TextWriter instance.

  • Transform conversione di XAML tramite il collegamento di un percorso di caricamento e salvataggio percorso come una singola operazione.Transform converts XAML by linking a load path and a save path as a single operation. Un contesto dello schema diverso o un sistema di tipi diversi di backup può essere utilizzato per XamlReader e XamlWriter, che è ciò che influenza il modo in cui il codice XAML risultante viene trasformato.A different schema context or different backing type system could be used for XamlReader and XamlWriter, which is what influences how the resulting XAML is transformed.

Per ulteriori informazioni su come usare XamlServices, vedere classe XAMLServices e lettura XAML di base o la scrittura.For more information about how to use XamlServices, see XAMLServices Class and Basic XAML Reading or Writing.

Sistema di tipi XAMLXAML Type System

Sistema di tipi XAML fornisce le API necessarie per lavorare con un singolo nodo specifico di un flusso del nodo XAML.The XAML type system provides the APIs that are required to work with a given individual node of a XAML node stream.

XamlType è la rappresentazione per un oggetto, ciò che si stanno elaborando tra un nodo oggetto iniziale e un nodo oggetto finale.XamlType is the representation for an object - what you are processing between a start object node and end object node.

XamlMember è la rappresentazione per un membro di un oggetto - ciò che si stanno elaborando tra un nodo membro iniziale e un nodo membro finale.XamlMember is the representation for a member of an object - what you are processing between a start member node and end member node.

Le interfacce API GetAllMembers e GetMember e DeclaringType segnalano le relazioni tra un XamlType e XamlMember.APIs such as GetAllMembers and GetMember and DeclaringType report the relationships between a XamlType and XamlMember.

Il comportamento predefinito di sistema di tipi XAML come implementato dai servizi XAML di .NET Framework è basato su common language runtime (CLR) e l'analisi statica di tipi CLR negli assembly tramite reflection.The default behavior of the XAML type system as implemented by .NET Framework XAML Services is based on the common language runtime (CLR), and static analysis of CLR types in assemblies by using reflection. Pertanto, per un tipo CLR specifico, l'implementazione predefinita di sistema di tipi XAML può esporre lo schema XAML di quel tipo e i relativi membri e segnalarlo in termini di sistema di tipi XAML.Therefore, for a specific CLR type, the default implementation of the XAML type system can expose the XAML schema of that type and its members and report it in terms of the XAML type system. Nel sistema di tipi XAML predefinito, il concetto di assegnabilità dei tipi viene eseguito il mapping all'ereditarietà CLR e i concetti di istanze, i tipi di valore e così via vengono associati ai comportamenti e caratteristiche CLR di supporto.In the default XAML type system, the concept of assignability of types is mapped onto CLR inheritance, and the concepts of instances, value types and so on are also mapped to the supporting behaviors and features of the CLR.

Riferimento per la funzionalità del linguaggio XAMLReference for XAML Language Features

Per il supporto di XAML, servizi XAML di .NET Framework fornisce l'implementazione specifica di concetti del linguaggio XAML definite dello spazio dei nomi XAML del linguaggio XAML.To support XAML, .NET Framework XAML Services provides specific implementation of XAML language concepts as defined for the XAML language XAML namespace. Questi scenari sono documentati come pagine di riferimento specifico.These are documented as specific reference pages. Le funzionalità del linguaggio sono documentate dalla prospettiva del comportano di queste funzionalità del linguaggio vengono elaborati da un reader XAML o un writer XAML definito dai servizi XAML di .NET Framework.The language features are documented from the perspective of how these language features behave when they are processed by a XAML reader or XAML writer that is defined by .NET Framework XAML Services. Per altre informazioni, vedere XAML Namespace (x:) Language Features.For more information, see XAML Namespace (x:) Language Features.