Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
En .NET Framework 3.5 y .NET Framework 3.0, tanto Windows Presentation Foundation (WPF) como 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 de WindowsBase, PresentationCore y PresentationFramework. Del mismo modo, los tipos públicos que proporcionaban 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 los servicios de lenguaje XAML habilita muchos escenarios de extensibilidad de XAML que se definieron originalmente en la implementación de XAML de un marco concreto, pero ahora forman parte de la compatibilidad global de .NET Framework 4 para el lenguaje XAML. En este artículo se enumeran los tipos que se migraron y se describen los problemas relacionados con la migración.
En .NET Framework 3.5 y .NET Framework 3.0, los tipos que WPF implementaba para admitir XAML estaban generalmente en el espacio de nombres System.Windows.Markup. La mayoría de estos tipos estaban en el ensamblado WindowsBase.
En .NET Framework 4, hay un nuevo espacio de nombres System.Xaml y un nuevo ensamblado System.Xaml. 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. 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. Esto habilita escenarios de extensibilidad de XAML sin tener que incluir los ensamblados de otros marcos (como WPF y Windows Workflow Foundation).
En cuanto a los tipos migrados, la mayoría de los tipos permanece en el espacio de nombres System.Windows.Markup . En parte, esto se hizo para evitar interrumpir las asignaciones de espacio de nombres de CLR en las implementaciones existentes archivo por archivo. Como resultado, el espacio de nombres System.Windows.Markup 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 para la implementación XAML de WPF (de WindowsBase y otros ensamblados WPF). 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.
Windows Workflow Foundation también proporcionaba tipos de soporte de XAML; en muchos casos, estos tenían nombres cortos idénticos a un equivalente de WPF. La siguiente es una lista de algunos tipos de soporte de XAML en Windows Workflow Foundation:
Estos tipos de soporte siguen existiendo en los ensamblados de Windows Workflow Foundation para .NET Framework 4 y pueden utilizarse aún para aplicaciones de Windows Workflow Foundation específicas; sin embargo, no se debe hacer referencia a ellos desde aplicaciones o marcos que no utilicen Windows Workflow Foundation.
En .NET Framework 3.5 y .NET Framework 3.0, la clase MarkupExtension para WPF estaba en el ensamblado WindowsBase. Existía una clase paralela para Windows Workflow Foundation, MarkupExtension, en el ensamblado System.Workflow.ComponentModel. En .NET Framework 4, la clase MarkupExtension se migra al ensamblado System.Xaml. En .NET Framework 4, MarkupExtensionestá pensado para cualquier escenario de extensibilidad de XAML que use servicios de XAML de .NET, no solo para los que se basan en marcos de trabajo específicos. 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.
.NET Framework 3.5 y .NET Framework 3.0 para WPF proporcionan varios servicios que estaban disponibles para los implementadores de MarkupExtension y las implementaciones de TypeConverter para admitir el uso de tipo y propiedad 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 interfaz IReceiveMarkupExtension. IReceiveMarkupExtension no se migró y se marca como [Obsolete]
para .NET Framework 4. Los escenarios que usaban IReceiveMarkupExtension deben usar devoluciones de llamada con atributos XamlSetMarkupExtensionAttribute en su lugar. AcceptedMarkupExtensionExpressionTypeAttribute también está marcado como [Obsolete]
.
Varias características del lenguaje XAML y componentes para WPF existían ya en el ensamblado PresentationFramework. Se implementaban como una subclase MarkupExtension para exponer los usos de la extensión de marcado en el marcado XAML. En .NET Framework 4, estas 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. WPF utiliza estas mismas implementaciones para las aplicaciones .NET Framework 4. 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.
La tabla siguiente contiene una lista de las clases de compatibilidad de características XAML que se definen en System.Xaml.
Característica del lenguaje XAML | Uso |
---|---|
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. 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. Para obtener más información sobre la documentación de referencia para XAML, consulteServicios XAML.
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. En .NET Framework 3.5 y .NET Framework 3.0, la clase ValueSerializer para WPF estaba en el ensamblado WindowsBase. En .NET Framework 4, la clase ValueSerializer se encuentra en System.Xaml y está diseñada para cualquier escenario de extensibilidad XAML, no solo para los que se basan en WPF. IValueSerializerContext (un servicio de soporte) y DateTimeValueSerializer (una subclase concreta) también se migran a System.Xaml.
XAML de WPF incluía varios atributos que se pueden aplicar a los tipos CLR para indicar algo sobre su comportamiento XAML. La siguiente es una lista de los atributos que existían en los ensamblados WPF en .NET Framework 3.5 y .NET Framework 3.0. Estos atributos se han migrado a System.Xaml en .NET Framework 4.
La interfaz IComponentConnector existía en WindowsBase en .NET Framework 3.5 y .NET Framework 3.0, pero existe en System.Xaml en .NET Framework 4. IComponentConnector sirve principalmente para el soporte técnico de herramientas y los compiladores de marcado de XAML.
La interfaz IComponentConnector 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 de un ámbito de nombres de XAML.
Las clases siguientes existen tanto en los ensamblados WPF como en el ensamblado System.Xaml de .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. La implementación de System.Xaml se encuentra en el espacio de nombres System.Xaml . 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. Para más información, vea la sección Comentarios en System.Windows.Markup.XamlReader y 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.
Comentarios de .NET Desktop feedback
.NET Desktop feedback es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraCursos
Módulo
Creación de una interfaz de usuario en una aplicación .NET MAUI con XAML - Training
Aprenda a diseñar una interfaz de usuario para una aplicación .NET MAUI con XAML.
Documentación
Espacios de nombres XAML y asignación de espacios de nombres - WPF .NET Framework
Obtenga más información sobre la presencia y el propósito de las dos asignaciones de espacio de nombres XAML que se encuentran a menudo en la etiqueta raíz de cada archivo XAML de Windows Presentation Foundation.
Obtenga información sobre el árbol visual y el árbol lógico, cómo se relacionan estos árboles con un concepto de árbol de objetos general y sobre LogicalTreeHelper y VisualTreeHelpers.
Migración e interoperabilidad - WPF .NET Framework
Obtenga información sobre la migración y la interoperabilidad entre aplicaciones de Windows Presentation Foundation (WPF) y otros tipos de aplicaciones de Microsoft Windows.