Servicios XAMLXAML Services

Este tema describe las capacidades de un conjunto de tecnologías que se conoce como XAML de .NET Framework Services.This topic describes the capabilities of a technology set known as .NET Framework XAML Services. La mayoría de los servicios y las API descritas se encuentran en el ensamblado System.Xaml, que es un ensamblado que se introdujo con la .NET Framework 4.NET Framework 4 conjunto de ensamblados de .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. Los servicios incluyen lectores y escritores, clases de esquema y compatibilidad de esquema, generadores, atribución de clases, compatibilidad intrínseca del lenguaje XAML y otras características del lenguaje XAML.Services include readers and writers, schema classes and schema support, factories, attributing of classes, XAML language intrinsic support, and other XAML language features.

Acerca de esta documentaciónAbout This Documentation

Documentación conceptual de los servicios XAML de .NET Framework, se da por supuesto que tiene experiencia con el lenguaje XAML y cómo aplicarlo a un marco concreto, por ejemplo Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) o Windows Workflow FoundationWindows Workflow Foundation, o una tecnología específica de área, características para características de la personalización de compilación en el ejemplo 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 FoundationWindows Workflow Foundation, or a specific technology feature area, for example the build customization features in Microsoft.Build.Framework.XamlTypes. Esta documentación no intenta explicar los conceptos básicos de XAML como un lenguaje de marcado, terminología de la sintaxis XAML u otro material introductorio.This documentation does not attempt to explain the basics of XAML as a markup language, XAML syntax terminology, or other introductory material. En su lugar, esta documentación se centra en concreto utilizando los servicios XAML de .NET Framework que están habilitadas en la biblioteca de ensamblado System.Xaml.Instead, this documentation focuses on specifically using the .NET Framework XAML Services that are enabled in the System.Xaml assembly library. La mayoría de estas API es para escenarios de extensibilidad y la integración de lenguaje XAML.Most of these APIs are for scenarios of XAML language integration and extensibility. Esto podría incluir cualquiera de las siguientes acciones:This might include any of the following:

  • Extender las capacidades de la base lectores de XAML o sistemas de escritura XAML (procesar el flujo de nodo XAML directamente; derivar su propio lector de XAML o el escritor de 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).

  • Definir tipos personalizados puede usar XAML que no tienen dependencias de un marco concreto y atribución los tipos para indicar su XAML tipo de características del sistema a los servicios XAML de .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.

  • Hospedar los lectores o escritores XAML como un componente de una aplicación, como un diseñador visual o un editor interactivo para los orígenes de marcado 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.

  • Escribir los convertidores de valores XAML (extensiones de marcado; convertidores de tipos para los tipos personalizados).Writing XAML value converters (markup extensions; type converters for custom types).

  • Define un contexto de esquema XAML personalizado (mediante técnicas de carga del ensamblado alternativas para copias de seguridad de los orígenes de tipo; mediante técnicas de búsqueda de tipos conocidos en lugar de siempre reflejar ensamblados; utilizando conceptos de ensamblado cargado que no usan el CLR AppDomain y su modelo de seguridad asociadas).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).

  • Extender el sistema de tipos XAML base.Extending the base XAML type system.

  • Mediante el Lookup o Invoker técnicas para influir en el código XAML escriba sistema y cómo se evalúa los respaldos de tipo.Using the Lookup or Invoker techniques to influence the XAML type system and how type backings are evaluated.

Si desea obtener material introductorio en XAML como un lenguaje, puede intentar información general sobre XAML (WPF).If you are looking for introductory material on XAML as a language, you might try XAML Overview (WPF). Ese tema discute XAML para una audiencia que es nueva para Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) y también al uso de marcado XAML y características del lenguaje 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. Otro documento útil es el material introductorio en el especificación del lenguaje XAML.Another useful document is the introductory material in the XAML language specification.

Servicios XAML de .NET framework y System.Xaml en la arquitectura de .NET.NET Framework XAML Services and System.Xaml in the .NET Architecture

En versiones anteriores de Microsoft .NET FrameworkMicrosoft .NET Framework, la compatibilidad con características del lenguaje XAML implementada por marcos de trabajo que se basan en Microsoft .NET FrameworkMicrosoft .NET Framework (Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), Windows Workflow FoundationWindows Workflow Foundation y Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)) y, por tanto, modificarse en su comportamiento y la API que usa dependiendo de qué usaba un marco concreto.In previous versions of Microsoft .NET FrameworkMicrosoft .NET Framework, support for XAML language features was implemented by frameworks that built on Microsoft .NET FrameworkMicrosoft .NET Framework (Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), Windows Workflow FoundationWindows Workflow Foundation and Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)), and therefore varied in its behavior and the API used depending on which specific framework you were using. Esto incluye el XAML analizador y su objeto de gráfico mecanismo de creación, funciones intrínsecas del lenguaje XAML, compatibilidad con la serialización y así sucesivamente.This included the XAML parser and its object graph creation mechanism, XAML language intrinsics, serialization support, and so on.

En .NET Framework 4.NET Framework 4, servicios XAML de .NET Framework y el ensamblado System.Xaml definen gran parte de lo que se necesita para admitir características del lenguaje 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. Esto incluye las clases base para los lectores y escritores de XAML.This includes base classes for XAML readers and XAML writers. La característica más importante que se agregan a los servicios XAML de .NET Framework que no estaba presente en cualquiera de las implementaciones de XAML específicas del marco es una representación de sistema de tipos para 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 representación del sistema de tipo presenta XAML de una manera orientada a objetos que se centra en las capacidades XAML sin incurrir en las dependencias en las capacidades concretas de marcos de trabajo.The type system representation presents XAML in an object-oriented way that centers on XAML capabilities without taking dependencies on specific capabilities of frameworks.

El sistema de tipos XAML no está limitado por el formulario de marcado o los detalles de tiempo de ejecución del origen de XAML; ni está limitado por cualquier sistema de tipos de copias de seguridad específico.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. El sistema de tipos XAML incluye las representaciones de objeto para los tipos, miembros, contextos de esquema XAML, conceptos del nivel XML y otros conceptos del lenguaje XAML o intrínsecos 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. Usar o ampliar el sistema de tipos XAML hace posible derivar desde clases como lectores XAML y escritores XAML y ampliar la funcionalidad de representaciones XAML en características concretas habilitadas por un marco de trabajo, una tecnología o una aplicación que consume o emite 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. El concepto de un contexto de esquema XAML habilita las operaciones de escritura del gráfico de objeto práctico de la combinación de una implementación de sistema de escritura de objeto XAML, sistema de tipos de respaldo de una tecnología tal y como se comunica a través de la información de ensamblado en el contexto y el nodo XAML origen.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. Para obtener más información sobre el concepto de esquema XAML.For more information on the XAML schema concept. vea contexto de esquema XAML predeterminado y contexto de esquema XAML de WPF.see Default XAML Schema Context and WPF XAML Schema Context.

Secuencias de nodo XAML, los lectores y escritores de XAMLXAML Node Streams, XAML Readers, and XAML Writers

Para entender el rol que desempeña de servicios XAML de .NET Framework en la relación entre el lenguaje XAML y las tecnologías concretas que usan XAML como lenguaje, es útil comprender el concepto de un flujo de nodo XAML y cómo ese concepto da forma a la API y terminología.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. El flujo de nodo XAML es un conceptual intermedio entre una representación del lenguaje XAML y el gráfico de objetos que representa el código XAML o que define.The XAML node stream is a conceptual intermediate between a XAML language representation and the object graph that the XAML represents or defines.

  • Un lector XAML es una entidad que procesa XAML en ciertos formularios y genera un flujo de nodo XAML.A XAML reader is an entity that processes XAML in some form, and produces a XAML node stream. En la API, un lector XAML se representa mediante la clase base XamlReader.In the API, a XAML reader is represented by the base class XamlReader.

  • Un escritor de XAML es una entidad que procesa un flujo de nodo XAML y genera otra cosa.A XAML writer is an entity that processes a XAML node stream and produces something else. En la API, un escritor de XAML se representa mediante la clase base XamlWriter.In the API, a XAML writer is represented by the base class XamlWriter.

Los dos escenarios más comunes que implican XAML se carga de XAML para crear instancias de un gráfico de objetos y guardar un gráfico de objetos de una aplicación o herramienta y generar una representación de XAML (normalmente en forma de marcado que se guarda como archivo de texto).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). Cargar XAML y crear un gráfico de objetos se conocen a menudo en esta documentación como la ruta de acceso de carga.Loading XAML and creating an object graph is often referred to in this documentation as the load path. Guardar o serializar un gráfico de objetos existentes en XAML se conoce a menudo en esta documentación como la operación de guardar ruta de acceso.Saving or serializing an existing object graph to XAML is often referred to in this documentation as the save path.

El tipo más común de ruta de acceso de carga se puede describir como sigue:The most common type of load path can be described as follows:

  • Comience con una representación de XAML, en formato XML codificado en UTF- y guarda como un archivo de texto.Start with a XAML representation, in UTF-encoded XML format and saved as a text file.

  • Carga ese XAML en XamlXmlReader.Load that XAML into XamlXmlReader. XamlXmlReaderes un XamlReader subclase.XamlXmlReader is a XamlReader subclass.

  • El resultado es un flujo de nodo XAML.The result is a XAML node stream. Puede tener acceso a los nodos individuales de la secuencia de nodo XAML utilizando XamlXmlReader / XamlReader API.You can access individual nodes of the XAML node stream using XamlXmlReader / XamlReader API. La operación más habitual aquí es avanzar por el flujo de nodo XAML, procesamiento de cada nodo mediante un "registro actual" metáfora.The most typical operation here is to advance through the XAML node stream, processing each node using a "current record" metaphor.

  • Los nodos resultantes se transfieren desde el flujo de nodo XAML a un XamlObjectWriter API.Pass the resulting nodes from the XAML node stream to a XamlObjectWriter API. XamlObjectWriteres un XamlWriter subclase.XamlObjectWriter is a XamlWriter subclass.

  • El XamlObjectWriter escribe un gráfico de objetos, un objeto a la vez, de acuerdo con el progreso a través de la secuencia de nodo XAML de origen.The XamlObjectWriter writes an object graph, one object at a time, in accordance to progress through the source XAML node stream. Esto se hace con la Ayuda de un contexto de esquema XAML y una implementación que puede tener acceso a los ensamblados y los tipos de un sistema de tipos de respaldo y un marco.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.

  • Llame a Result al final del flujo de nodo XAML para obtener el objeto raíz del gráfico de objetos.Call Result at the end of the XAML node stream to obtain the root object of the object graph.

El tipo más común de ruta de acceso se puede describir como sigue:The most common type of save path can be described as follows:

  • Comience con el gráfico de objetos de un tiempo de ejecución de la aplicación completa, el contenido de la interfaz de usuario y el estado de un tiempo de ejecución o un segmento más pequeño de representación de objeto de la aplicación general en tiempo de ejecución.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.

  • Desde un objeto de inicio lógico, como una raíz de la aplicación o la raíz del documento, cargue los objetos en XamlObjectReader.From a logical start object, such as an application root or document root, load the objects into XamlObjectReader. XamlObjectReaderes un XamlReader subclase.XamlObjectReader is a XamlReader subclass.

  • El resultado es un flujo de nodo XAML.The result is a XAML node stream. Puede tener acceso a los nodos individuales de la secuencia de nodo XAML utilizando XamlObjectReader y XamlReader API.You can access individual nodes of the XAML node stream using XamlObjectReader and XamlReader API. La operación más habitual aquí es avanzar por el flujo de nodo XAML, procesamiento de cada nodo mediante un "registro actual" metáfora.The most typical operation here is to advance through the XAML node stream, processing each node using a "current record" metaphor.

  • Los nodos resultantes se transfieren desde el flujo de nodo XAML a un XamlXmlWriter API.Pass the resulting nodes from the XAML node stream to a XamlXmlWriter API. XamlXmlWriteres un XamlWriter subclase.XamlXmlWriter is a XamlWriter subclass.

  • El XamlXmlWriter escribe XAML en un XML UTF codificación.The XamlXmlWriter writes XAML in an XML UTF encoding. Puede guardar esto como un archivo de texto, como una secuencia o en otras formas.You can save this as a text file, as a stream, or in other forms.

  • Llame a Flush para obtener el resultado final.Call Flush to obtain the final output.

Para obtener más información sobre los conceptos de flujo de nodo XAML, vea Understanding XAML Node Stream Structures y conceptos.For more information about XAML node stream concepts, see Understanding XAML Node Stream Structures and Concepts.

XamlServices (clase)The XamlServices Class

No siempre es necesario ocuparse de un flujo de nodo XAML.It is not always necessary to deal with a XAML node stream. Si desea que una ruta de acceso de carga básica o ruta de acceso básico, puede usar las API en el XamlServices clase.If you want a basic load path or a basic save path, you can use APIs in the XamlServices class.

  • Varias firmas de Load implementar una ruta de acceso de carga.Various signatures of Load implement a load path. Puede cargar un archivo o secuencia, o puede cargar una XmlReader, TextReader o XamlReader que ajuste a la entrada XAML, cargue las API de ese lector.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.

  • Varias firmas de Save guardar un gráfico de objetos y generan el resultado como una secuencia, archivo, o XmlWriter / TextWriter instancia.Various signatures of Save save an object graph and produce output as a stream, file, or XmlWriter/TextWriter instance.

  • TransformConvierte XAML vinculando una ruta de acceso de carga y otra de guardado como una única operación.Transform converts XAML by linking a load path and a save path as a single operation. Podría usarse un contexto de esquema o el sistema de tipos de respaldo diferentes para XamlReader y XamlWriter, que es lo que afecta a cómo se transforma el XAML resultante.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.

Para obtener más información sobre cómo usar XamlServices, consulte clase XAMLServices y Basic de XAML de lectura o escritura.For more information about how to use XamlServices, see XAMLServices Class and Basic XAML Reading or Writing.

Sistema de tipos XAMLXAML Type System

El sistema de tipos XAML proporciona las API necesarias para trabajar con un determinado nodo individual de un flujo de nodo XAML.The XAML type system provides the APIs that are required to work with a given individual node of a XAML node stream.

XamlTypees la representación en forma de un objeto: lo que se está procesando entre un nodo de objeto de inicio y un nodo de objeto final.XamlType is the representation for an object - what you are processing between a start object node and end object node.

XamlMemberes la representación para un miembro de un objeto: lo que se está procesando entre un nodo de miembro de inicio y un nodo de miembro final.XamlMember is the representation for a member of an object - what you are processing between a start member node and end member node.

Las API como GetAllMembers y GetMember y DeclaringType notifican las relaciones entre un XamlType y XamlMember.APIs such as GetAllMembers and GetMember and DeclaringType report the relationships between a XamlType and XamlMember.

El comportamiento predeterminado del sistema de tipos XAML tal como está implementado por los servicios XAML de .NET Framework se basa en el common language runtime (CLR) y el análisis estático de tipos CLR en ensamblados mediante reflexión.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. Por lo tanto, para un tipo específico de CLR, la implementación predeterminada del sistema de tipos XAML puede exponer el esquema XAML de ese tipo y sus miembros y notificarlo en términos de sistema de tipos 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. En el sistema de tipos XAML de forma predeterminada, el concepto de capacidad de asignación de tipos se asigna a la herencia de CLR y los conceptos de instancias, tipos de valor y así sucesivamente también se asignan a los comportamientos de compatibilidad y características de CLR.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.

Referencia de características del lenguaje XAMLReference for XAML Language Features

Para admitir XAML, servicios XAML de .NET Framework proporcionan una implementación concreta de los conceptos del lenguaje XAML como se define para el espacio de nombres XAML de lenguaje XAML.To support XAML, .NET Framework XAML Services provides specific implementation of XAML language concepts as defined for the XAML language XAML namespace. Estos se documentan como páginas de referencia específica.These are documented as specific reference pages. Las características del lenguaje se documentan desde la perspectiva de cómo se comportan estas características del lenguaje cuando se procesan mediante un lector XAML o sistema de escritura XAML que se define por los servicios XAML de .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. Para obtener más información, consulta XAML Namespace (x:) Language Features.For more information, see XAML Namespace (x:) Language Features.