Tipos migrados de WPF a System.XamlTypes Migrated from WPF to System.Xaml

En .NET Framework 3,5 y .NET Framework 3,0, Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) y Windows Workflow Foundation incluyen una implementación del lenguaje XAML.In .NET Framework 3.5 and .NET Framework 3.0, both Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) and Windows Workflow Foundation included a XAML language implementation. Muchos de los tipos públicos que proporcionaban extensibilidad para la implementación XAML de WPF existían en los ensamblados de WindowsBase, PresentationCore y PresentationFramework.Many of the public types that provided extensibility for the WPF XAML implementation existed in the WindowsBase, PresentationCore, and PresentationFramework assemblies. Del mismo modo, los tipos públicos que proporcionaban extensibilidad para Windows Workflow Foundation XAML existían en el ensamblado System. Workflow. ComponentModel.Likewise, public types that provided extensibility for Windows Workflow Foundation XAML existed in the System.Workflow.ComponentModel assembly. En el .NET Framework 4, algunos de los tipos relacionados con XAML se migran al ensamblado System. Xaml.In the .NET Framework 4, some of the XAML-related types are migrated to the System.Xaml assembly. Una implementación .NET Framework común de los servicios de lenguaje XAML habilita muchos escenarios de extensibilidad de XAML que se definieron originalmente en la implementación XAML de un marco concreto, pero ahora forman parte de la compatibilidad con el lenguaje XAML de .NET Framework 4.A common .NET Framework implementation of XAML language services enables many XAML extensibility scenarios that were originally defined by a specific framework's XAML implementation but are now part of overall .NET Framework 4 XAML language support. En este tema se enumeran los tipos que se han migrado y se describen los problemas relacionados con la migración.This topic lists the types that are migrated and discusses issues related to the migration.

Nombres de ensamblados y espacios de nombresAssemblies and Namespaces

En .NET Framework 3,5 y .NET Framework 3,0, los tipos que WPF implementaba para admitir XAML estaban generalmente en System.Windows.Markup el espacio de nombres.In .NET Framework 3.5 and .NET Framework 3.0, the types that WPF implemented to support XAML were generally in the System.Windows.Markup namespace. La mayoría de estos tipos estaban en el ensamblado WindowsBase.Most of these types were in the WindowsBase assembly.

En .NET Framework 4, hay un nuevo System.Xaml espacio de nombres y un nuevo ensamblado System. Xaml.In .NET Framework 4, there is a new System.Xaml namespace and a new System.Xaml assembly. Muchos de los tipos que se implementaron originalmente para XAML de WPF se proporcionan ahora como puntos o servicios de extensibilidad para cualquier implementación de XAML.Many of the types that were originally implemented for WPF XAML are now provided as extensibility points or services for any implementation of XAML. Para contribuir a que estén disponibles para escenarios más generales, los tipos se reenvían desde su ensamblado WPF original al ensamblado System.Xaml.As part of making them available for more general scenarios, the types are type-forwarded from their original WPF assembly to the System.Xaml assembly. Esto permite escenarios de extensibilidad de XAML sin tener que incluir los ensamblados de otros marcos (como WPF y Windows Workflow Foundation).This enables XAML extensibility scenarios without having to include the assemblies of other frameworks (such as WPF and Windows Workflow Foundation).

En cuanto a los tipos migrados, la mayoría de los tipos permanece en el espacio de nombres System.Windows.Markup .For migrated types, most of the types remain in the System.Windows.Markup namespace. En parte, esto se hizo para evitar interrumpir las asignaciones de espacio de nombres de CLR en las implementaciones existentes archivo por archivo.This was partially to avoid breaking CLR namespace mappings in existing implementations on a per-file basis. Como resultado, el System.Windows.Markup espacio de nombres de .NET Framework 4 contiene una mezcla de tipos de soporte de lenguaje XAML generales (del ensamblado System. xaml) y tipos que son específicos de la implementación XAML de WPF (de WindowsBase y otros ensamblados de WPF).As a result, the System.Windows.Markup namespace in .NET Framework 4 contains a mixture of general XAML language support types (from the System.Xaml assembly) and types that are specific to the WPF XAML implementation (from WindowsBase and other WPF assemblies). Todo tipo que se ha migrado a System.Xaml, pero existía anteriormente en un ensamblado de WPF, tiene compatibilidad de reenvío de tipos en la versión 4 del ensamblado de WPF.Any type that was migrated to System.Xaml, but existed previously in a WPF assembly, has type-forwarding support in version 4 of the WPF assembly.

Tipos de soporte de XAML en WorkflowWorkflow XAML Support Types

Windows Workflow Foundation también proporcionan tipos de compatibilidad con XAML y, en muchos casos, tenían nombres cortos idénticos a un equivalente de WPF.Windows Workflow Foundation also provided XAML support types, and in many cases these had identical short names to a WPF equivalent. A continuación se muestra una lista de los tipos de compatibilidad con XAML Windows Workflow Foundation:The following is a list of Windows Workflow Foundation XAML support types:

Estos tipos de soporte siguen existiendo en los ensamblados de Windows Workflow Foundation para .NET Framework 4 y todavía se pueden usar para aplicaciones Windows Workflow Foundation específicas; sin embargo, las aplicaciones o marcos que no usan Windows Workflow Foundation no deben hacer referencia a ellos.These support types still exist in the Windows Workflow Foundation assemblies for .NET Framework 4 and can still be used for specific Windows Workflow Foundation applications; however, they should not be referenced by applications or frameworks that do not use Windows Workflow Foundation.

MarkupExtensionMarkupExtension

En el .NET Framework 3,5 y .NET Framework 3,0, la MarkupExtension clase para WPF estaba en el ensamblado WindowsBase.In the .NET Framework 3.5 and .NET Framework 3.0, the MarkupExtension class for WPF was in the WindowsBase assembly. Existe una clase paralela para Windows Workflow Foundation MarkupExtension,, en el ensamblado System. Workflow. ComponentModel.A parallel class for Windows Workflow Foundation, MarkupExtension, existed in the System.Workflow.ComponentModel assembly. En el .NET Framework 4, la MarkupExtension clase se migra al ensamblado System. Xaml.In the .NET Framework 4, the MarkupExtension class is migrated to the System.Xaml assembly. En el .NET Framework 4, MarkupExtension está pensado para cualquier escenario de extensibilidad de XAML que use .NET Framework servicios XAML, no solo para los que se basan en marcos de trabajo específicos.In the .NET Framework 4, MarkupExtension is intended for any XAML extensibility scenario that uses .NET Framework XAML Services, not just for those that build on specific frameworks. Siempre que sea posible, los marcos específicos y el código de usuario del marco deben compilarse también en la clase MarkupExtension para la extensión XAML.When possible, specific frameworks or user code in the framework should also build on the MarkupExtension class for XAML extension.

Clases de servicio de soporte de MarkupExtensionMarkupExtension Supporting Service Classes

.NET Framework 3,5 y .NET Framework 3,0 para WPF proporcionan varios servicios que estaban disponibles para MarkupExtension los implementadores TypeConverter e implementaciones con el fin de admitir el uso de tipo y propiedad en XAML..NET Framework 3.5 and .NET Framework 3.0 for WPF provided several services that were available to MarkupExtension implementers and TypeConverter implementations to support type/property usage in XAML. Estos servicios son los siguientes:These services are the following:

Nota

Otro servicio de .NET Framework 3,5 relacionado con las extensiones de marcado es la IReceiveMarkupExtension interfaz.Another service from .NET Framework 3.5 that is related to markup extensions is the IReceiveMarkupExtension interface. IReceiveMarkupExtensionno se migró y está marcado [Obsolete] para .NET Framework 4.IReceiveMarkupExtension was not migrated and is marked [Obsolete] for .NET Framework 4. Los escenarios que usaban IReceiveMarkupExtension deben usar devoluciones de llamada con atributos XamlSetMarkupExtensionAttribute en su lugar.Scenarios that previously used IReceiveMarkupExtension should instead use XamlSetMarkupExtensionAttribute attributed callbacks. AcceptedMarkupExtensionExpressionTypeAttribute también está marcado como [Obsolete].AcceptedMarkupExtensionExpressionTypeAttribute is also marked [Obsolete].

Características del lenguaje XAMLXAML Language Features

Varias características del lenguaje XAML y componentes para WPF existían ya en el ensamblado PresentationFramework.Several XAML language features and components for WPF previously existed in the PresentationFramework assembly. Se implementaban como una subclase MarkupExtension para exponer los usos de la extensión de marcado en el marcado XAML.These were implemented as a MarkupExtension subclass to expose markup extension usages in XAML markup. En .NET Framework 4, existen en el ensamblado System. XAML para que los proyectos que no incluyen ensamblados de WPF puedan utilizar estas características de nivel de lenguaje XAML.In .NET Framework 4, these exist in the System.Xaml assembly so that projects that do not include WPF assemblies can use these XAML language-level features. WPF utiliza estas mismas implementaciones para las aplicaciones de .NET Framework 4.WPF uses these same implementations for .NET Framework 4 applications. Como en los otros casos que se enumeran en este tema, los tipos de soporte continúan existiendo en el espacio de nombres System.Windows.Markup para evitar interrumpir las referencias anteriores.As with the other cases that are listed in this topic, the supporting types continue to exist in the System.Windows.Markup namespace to avoid breaking previous references.

La tabla siguiente contiene una lista de las clases de compatibilidad de características XAML que se definen en System.Xaml.The following table contains a list of the XAML feature-support classes that are defined in System.Xaml.

Característica del lenguaje XAMLXAML Language Feature UsoUsage
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

Aunque System.Xaml no tenga clases específicas de soporte, la lógica general para procesar las características del lenguaje XAML reside ahora en System.Xaml y en sus lectores XAML y sistemas de escritura XAML implementados.Although System.Xaml may not have specific support classes, the general logic for processing language features for the XAML language now resides in System.Xaml and its implemented XAML readers and XAML writers. Por ejemplo, x:TypeArguments es un atributo que es procesado por los lectores y sistemas de escritura XAML de las implementaciones de System.Xaml; se puede tener en cuenta en el flujo de nodo XAML, tiene el control en el contexto de esquema XAML predeterminado (basado en CLR), tiene una representación del sistema de tipos XAML, etc.For example, x:TypeArguments is an attribute that is processed by XAML readers and XAML writers from System.Xaml implementations; it can be noted in the XAML node stream, has handling in the default (CLR-based) XAML schema context, has a XAML type-system representation, and so on. En consecuencia, la documentación de referencia para todas las características de nivel de lenguaje XAML es un subtema de XAML Services y de esa área general del conjunto de documentación de .NET Framework, en lugar de formar parte de la documentación de WPF como un subtema de Advanced (Windows Presentation Foundation) (como sigue ocurriendo con los conjuntos de documentación 3.5).As a result, the reference documentation for all XAML language-level features is a subtopic for XAML Services and that general area of the .NET Framework documentation set, instead of being part of the WPF documentation set as a subtopic of Advanced (Windows Presentation Foundation) (as is still the case in 3.5 documentation sets).

ValueSerializer y clases compatiblesValueSerializer and Supporting Classes

La clase ValueSerializer admite la conversión de tipo a una cadena, especialmente para los casos de serialización de XAML en los que la serialización puede requerir varios modos o nodos en el resultado.The ValueSerializer class supports type conversion to a string, particularly for XAML serialization cases where serialization may require multiple modes or nodes in the output. En .NET Framework 3,5 y .NET Framework 3,0, ValueSerializer para WPF estaba en el ensamblado WindowsBase.In .NET Framework 3.5 and .NET Framework 3.0, the ValueSerializer for WPF was in the WindowsBase assembly. En el .NET Framework 4, la ValueSerializer clase está en System. XAML y está pensada para cualquier escenario de extensibilidad XAML, no solo para los que se basan en WPF.In the .NET Framework 4, the ValueSerializer class is in System.Xaml and is intended for any XAML extensibility scenario, not just for those that build on WPF. IValueSerializerContext (un servicio de soporte) y DateTimeValueSerializer (una subclase concreta) también se migran a System.Xaml.IValueSerializerContext (a supporting service) and DateTimeValueSerializer (a specific subclass) are also migrated to System.Xaml.

XAML de WPF incluía varios atributos que se pueden aplicar a los tipos CLR para indicar algo sobre su comportamiento XAML.WPF XAML included several attributes that can be applied to CLR types to indicate something about their XAML behavior. A continuación se muestra una lista de los atributos que existían en los ensamblados de WPF en .NET Framework 3,5 y .NET Framework 3,0.The following is a list of the attributes that existed in WPF assemblies in .NET Framework 3.5 and .NET Framework 3.0. Estos atributos se migran a System. XAML en .NET Framework 4.These attributes are migrated to System.Xaml in .NET Framework 4.

Clases diversasMiscellaneous Classes

La IComponentConnector interfaz existía en WindowsBase en el .NET Framework 3,5 y el .NET Framework 3,0, pero existe en System. XAML en .NET Framework 4.The IComponentConnector interface existed in WindowsBase in the .NET Framework 3.5 and .NET Framework 3.0, but exists in System.Xaml in .NET Framework 4. IComponentConnector sirve principalmente para el soporte técnico de herramientas y los compiladores de marcado de XAML.IComponentConnector is primarily intended for tooling support and XAML markup compilers.

La INameScope interfaz existía en WindowsBase en el .NET Framework 3,5 y el .NET Framework 3,0, pero existe en System. XAML en .NET Framework 4.The INameScope interface existed in WindowsBase in the .NET Framework 3.5 and .NET Framework 3.0, but exists in System.Xaml in .NET Framework 4. INameScope define las operaciones básicas de un ámbito de nombres de XAML.INameScope defines basic operations for a XAML namescope.

Las clases siguientes existen tanto en los ensamblados de WPF como en el ensamblado System. Xaml del .NET Framework 4:The following classes exist in both the WPF assemblies and the System.Xaml assembly in the .NET Framework 4:

XamlReader

XamlWriter

XamlParseException

La implementación de WPF se encuentra en el espacio de nombres System.Windows.Markup y el ensamblado PresentationFramework.The WPF implementation is found in the System.Windows.Markup namespace, and PresentationFramework assembly. La implementación de System.Xaml se encuentra en el espacio de nombres System.Xaml .The System.Xaml implementation is found in the System.Xaml namespace. Si se utilizan tipos WPF o se hacen derivaciones de tipos WPF, normalmente debería usar las implementaciones de WPF de XamlReader y XamlWriter en lugar de las implementaciones de System.Xaml.If you are using WPF types or are deriving from WPF types, you should typically use the WPF implementations of XamlReader and XamlWriter instead of the System.Xaml implementations. Para más información, vea la sección Comentarios en System.Windows.Markup.XamlReader y System.Windows.Markup.XamlWriter.For more information, see Remarks in System.Windows.Markup.XamlReader and System.Windows.Markup.XamlWriter.

Si va a incluir referencias a ensamblados de WPF y System.Xaml y también usa instrucciones include para los espacios de nombres tanto System.Windows.Markup como System.Xaml , puede que necesite completar las llamadas a estas API para resolver los tipos sin ambigüedad.If you are including references to both WPF assemblies and System.Xaml, and you also are using include statements for both the System.Windows.Markup and System.Xaml namespaces, you may need to fully qualify the calls to these APIs in order to resolve the types without ambiguity.

Vea tambiénSee also