Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En .NET Framework 3.5 y .NET Framework 3.0, Windows Presentation Foundation (WPF) y Windows Workflow Foundation incluían una implementación del lenguaje XAML. Muchos de los tipos públicos que proporcionaban extensibilidad para la implementación XAML de WPF existían en los ensamblados WindowsBase, PresentationCore y PresentationFramework. Del mismo modo, los tipos públicos que proporcionaron extensibilidad para XAML de Windows Workflow Foundation existían en el ensamblado System.Workflow.ComponentModel. En .NET Framework 4, algunos de los tipos relacionados con XAML se migraron al ensamblado System.Xaml. Una implementación común de .NET Framework de servicios de lenguaje XAML permite muchos escenarios de extensibilidad XAML definidos originalmente por la implementación XAML de un marco específico, pero que ahora forman parte de la compatibilidad general con lenguaje XAML de .NET Framework 4. En este artículo se enumeran los tipos que se migraron y se describen los problemas relacionados con la migración.
Ensamblados y espacios de nombres
En .NET Framework 3.5 y .NET Framework 3.0, los tipos que WPF implementó para admitir XAML se encontraban generalmente en el System.Windows.Markup espacio de nombres. La mayoría de estos tipos estaban en el ensamblado de WindowsBase.
En la versión 4 de .NET Framework, hay un nuevo espacio de nombres System.Xaml y un nuevo ensamblado llamado System.Xaml. Muchos de los tipos que se implementaron originalmente para XAML de WPF ahora se proporcionan como puntos de extensibilidad o servicios para cualquier implementación de XAML. Para hacerlos accesibles en escenarios más generales, los tipos se reenviaron desde el ensamblado original de WPF al ensamblado de System.Xaml. Esto permite escenarios de extensibilidad XAML sin tener que incluir los ensamblados de otros marcos (como WPF y Windows Workflow Foundation).
Para los tipos migrados, la mayoría de los tipos permanecen en el System.Windows.Markup espacio de nombres. Esto fue parcialmente para evitar el quiebre de las asignaciones de espacios de nombres CLR en cada archivo dentro de las implementaciones actuales. Como resultado, el System.Windows.Markup espacio de nombres de .NET Framework 4 contiene una combinación de tipos generales de compatibilidad con lenguaje XAML (del ensamblado System.Xaml) y tipos específicos de la implementación XAML de WPF (desde WindowsBase y otros ensamblados de WPF). Cualquier tipo que se migró a System.Xaml, pero que existía anteriormente en un ensamblado WPF, tiene compatibilidad con el reenvío de tipos en la versión 4 del ensamblado WPF.
Tipos de compatibilidad XAML de Workflow
Windows Workflow Foundation también proporcionó tipos de compatibilidad XAML y, en muchos casos, estos tenían nombres cortos idénticos a un equivalente de WPF. A continuación se muestra una lista de los tipos de compatibilidad xaml de Windows Workflow Foundation:
Estos tipos de soporte técnico siguen existiendo en los ensamblados de Windows Workflow Foundation para .NET Framework 4 y todavía se pueden usar para aplicaciones específicas de Windows Workflow Foundation; sin embargo, las aplicaciones o marcos no deben hacer referencia a ellos que no usen Windows Workflow Foundation.
MarkupExtension
En .NET Framework 3.5 y .NET Framework 3.0, la MarkupExtension clase para WPF estaba en el ensamblado de WindowsBase. Existía una clase paralela para Windows Workflow Foundation, MarkupExtension, en el ensamblado System.Workflow.ComponentModel. En .NET Framework 4, la MarkupExtension clase se migra al ensamblado System.Xaml. En .NET Framework 4, MarkupExtension está diseñado para cualquier escenario de extensibilidad XAML que use servicios XAML de .NET, no solo para aquellos que se basan en marcos específicos. Cuando sea posible, los marcos específicos o el código de usuario del marco también deben basarse en la clase para la MarkupExtension extensión XAML.
Clases de servicio auxiliares de MarkupExtension
.NET Framework 3.5 y .NET Framework 3.0 para WPF proporcionaron varios servicios que estaban disponibles para los implementadores de MarkupExtension y para las implementaciones de TypeConverter con el fin de admitir el uso de tipos y propiedades en XAML. Estos servicios son los siguientes:
Nota:
Otro servicio de .NET Framework 3.5 que está relacionado con las extensiones de marcado es la IReceiveMarkupExtension interfaz .
IReceiveMarkupExtension no se migró y está marcado [Obsolete] para .NET Framework 4. Los escenarios que se usaron IReceiveMarkupExtension anteriormente deben usar XamlSetMarkupExtensionAttribute devoluciones de llamada con atributos.
AcceptedMarkupExtensionExpressionTypeAttribute también está marcado como [Obsolete].
Características del lenguaje XAML
Ya existían varias características y componentes del lenguaje XAML para WPF en el ensamblado PresentationFramework. Se implementaron como una MarkupExtension subclase para exponer los usos de las extensiones de marcado en el marcado XAML. En .NET Framework 4, existen en el ensamblado System.Xaml para que los proyectos que no incluyan ensamblados wpF puedan usar estas características de nivel de lenguaje XAML. WPF usa estas mismas implementaciones para aplicaciones de .NET Framework 4. Al igual que con los otros casos enumerados en este tema, los tipos auxiliares siguen existiendo en el System.Windows.Markup espacio de nombres para evitar interrumpir las referencias anteriores.
La tabla siguiente contiene una lista de las clases de compatibilidad con características XAML definidas en System.Xaml.
| Característica de lenguaje XAML | Uso |
|---|---|
| ArrayExtension | <x:Array ...> |
| NullExtension | {x:Null} |
| StaticExtension | {x:Static ...} |
| TypeExtension | {x:Type ...} |
Aunque System.Xaml puede no tener clases de soporte específicas, la lógica general para procesar las características del lenguaje XAML ahora reside en System.Xaml y sus lectores XAML implementados y escritores XAML. Por ejemplo, x:TypeArguments es un atributo procesado por lectores XAML y escritores XAML de implementaciones de System.Xaml; se puede anotar en el flujo de nodo XAML, tiene control en el contexto de esquema XAML predeterminado (basado en CLR), tiene una representación del sistema de tipos XAML, etc. Para obtener más información sobre la documentación de referencia para XAML, consulta Servicios XAML.
ValueSerializer y clases auxiliares
La ValueSerializer clase admite la conversión de tipos en una cadena, especialmente para los casos de serialización XAML en los que la serialización puede requerir varios modos o nodos en la salida. En .NET Framework 3.5 y .NET Framework 3.0, el ValueSerializer para WPF estaba en el ensamblado de WindowsBase. En .NET Framework 4, la ValueSerializer clase está en System.Xaml y está pensada para cualquier escenario de extensibilidad XAML, no solo para aquellos que se basan en WPF. IValueSerializerContext (un servicio auxiliar) y DateTimeValueSerializer (una subclase específica) también se migran a System.Xaml.
atributos de XAML-Related
XAML de WPF incluía varios atributos que se pueden aplicar a los tipos CLR para indicar algo sobre su comportamiento XAML. A continuación se muestra una lista de los atributos que existían en ensamblados de WPF en .NET Framework 3.5 y .NET Framework 3.0. Estos atributos se migran a System.Xaml en .NET Framework 4.
Clases varias
La IComponentConnector interfaz existía en WindowsBase en .NET Framework 3.5 y .NET Framework 3.0, pero existe en System.Xaml en .NET Framework 4. IComponentConnector está pensado principalmente para el soporte de herramientas y para los compiladores para marcado XAML.
La INameScope interfaz existía en WindowsBase en .NET Framework 3.5 y .NET Framework 3.0, pero existe en System.Xaml en .NET Framework 4. INameScope define las operaciones básicas para un ámbito de nombres XAML.
Clases relacionadas con XAML con nombres compartidos que existen en WPF y System.Xaml
Las siguientes clases existen tanto en los ensamblados wpF como en el ensamblado System.Xaml en .NET Framework 4:
XamlReader
XamlWriter
XamlParseException
La implementación de WPF se encuentra en el espacio de nombres System.Windows.Markup y en el ensamblado PresentationFramework. La implementación de System.Xaml se encuentra en el System.Xaml espacio de nombres . Si usas tipos de WPF o derivas de tipos de WPF, normalmente debes usar las implementaciones de WPF de XamlReader y XamlWriter en lugar de las implementaciones System.Xaml. Para obtener más información, vea Comentarios en System.Windows.Markup.XamlReader y System.Windows.Markup.XamlWriter.
Si estás incluyendo referencias a ensamblados WPF y System.Xaml, y también usas include instrucciones para los espacios de nombres System.Windows.Markup y System.Xaml, es posible que tengas que calificar completamente las llamadas a estas APIs para resolver los tipos sin ambigüedad.
.NET Desktop feedback