Lo nuevo en Windows Presentation Foundation versión 3.5

Actualización: noviembre 2007

En este tema se explican brevemente las principales diferencias entre las versiones 3.0 y 3.5 de Windows Presentation Foundation (WPF). 

Este tema contiene las secciones siguientes.

  • Compatibilidad con la versión 3.0
  • Aplicaciones
  • Gráficos
  • Gráficos 3D
  • Enlace de datos
  • Controles
  • Documentos
  • Anotaciones
  • Temas relacionados

Compatibilidad con la versión 3.0

Compatibilidad con versiones anteriores y posteriores

Una aplicación generada con WPF 3.0 se ejecutará en el motor de tiempo de ejecución de WPF 3.5.

Una aplicación generada con WPF 3.5 se ejecutará en el motor de tiempo de ejecución de la versión 3.0 si la aplicación utiliza únicamente las características disponibles en WPF 3.0.

WPF 3.5 define un nuevo espacio de nombres XML, https://schemas.microsoft.com/netfx/2007/xaml/presentation. Al generar una aplicación mediante WPF 3.5, puede utilizar este espacio de nombres o el espacio de nombres definido en WPF 3.0.

Usar como destino un motor de tiempo de ejecución concreto

Las aplicaciones generadas con WPF 3.0 pueden destinarse a cualquier versión del marco de trabajo igual o posterior a la versión en la que se generaron originalmente. Para obtener más información, vea Cómo: Utilizar el archivo de configuración de una aplicación para determinar la versión de .NET Framework que se va a usar.

Aplicaciones

Se han realizado las mejoras siguientes en el modelo de aplicación:

  • Compatibilidad completa con complementos para admitir los complementos visuales y no visuales de aplicaciones independientes y Aplicaciones del explorador XAML (XBAPs).

  • Las XBAPs se pueden ejecutar ahora en Firefox.

  • Las cookies se pueden compartir entre las XBAPs y aplicaciones web del mismo sitio de origen.

  • Mejora de la experiencia de XAML IntelliSense para una mayor productividad.

  • Compatibilidad de localización expandida.

Complementos visuales y no visuales en WPF

Una aplicación extensible expone la funcionalidad de modo que permite a otras aplicaciones integrarse con su funcionalidad y extenderla. Los complementos son una manera común para que las aplicaciones expongan su extensibilidad. En .NET Framework, un complemento suele ser un ensamblado empaquetado como una biblioteca de vínculos dinámicos (.dll). La aplicación host carga dinámicamente el complemento en tiempo de ejecución para usar y extender los servicios que expone el host. El host y el complemento interactúan entre sí mediante un contrato conocido, que normalmente es una interfaz común publicada por la aplicación host.

Cuando una aplicación admite complementos, los desarrolladores propios y los de otros fabricantes pueden crear complementos para ella. Hay muchos ejemplos de estos tipos de aplicación, entre ellos Office, Visual Studio y Microsoft Windows Media Player. Por ejemplo, la compatibilidad con complementos de Microsoft Windows Media Player permite que otros fabricantes creen descodificadores de DVD y codificadores de MP3.

.NET Framework implementa los bloques de construcción que permiten que las aplicaciones admitan complementos. Sin embargo, el tiempo y la complejidad necesarios para generar esa compatibilidad pueden ser costosos, teniendo en cuenta que un diseño de complemento robusto debe ocuparse de lo siguiente:

  • Detección: búsqueda de complementos que se adhieran a los contratos admitidos por las aplicaciones host.

  • Activación: carga, ejecución y establecimiento de la comunicación con los complementos.

  • Aislamiento: uso de dominios de aplicación o procesos para establecer límites de aislamiento que protejan las aplicaciones frente a posibles problemas de seguridad y ejecución con los complementos.

  • Comunicación: los complementos y las aplicaciones host deben poder comunicarse entre sí más allá de los límites de aislamiento llamando a métodos y pasando datos.

  • Administración de la duración: carga y descarga de los dominios de aplicación y procesos de una manera limpia y predecible (vea Información general sobre dominios de aplicación).

  • Control de versiones: garantía de que las aplicaciones host y los complementos puedan continuar comunicándose cuando se creen nuevas versiones de cualquiera de ellos.

En lugar de exigirle que resuelva estos problemas, .NET Framework incluye ahora un conjunto de tipos, ubicados en el espacio de nombres System.AddIn, que se conocen como el "modelo de complementos". El modelo de complementos de .NET Framework proporciona funcionalidad para cada uno de los comportamientos de complemento comunes que se han mencionado anteriormente.

En algunos escenarios, sin embargo, también puede ser conveniente permitir que los complementos se integren con las UIs de la aplicación host y las extiendan. WPF extiende el modelo de complementos de .NET Framework para permitir esta compatibilidad, que se genera en torno a un objeto FrameworkElement propiedad de un complemento en las UIs de una aplicación host. Esto permite a los desarrolladores de WPF crear aplicaciones compatibles con los siguientes escenarios comunes:

  • Aplicaciones de estilo Messenger que proporcionen servicios adicionales con complementos afines de otros fabricantes.

  • Aplicaciones de juegos diseñadas para hospedar juegos de otros fabricantes.

  • Aplicaciones lectoras de contenido que hospeden anuncios.

  • Aplicaciones mashup que hospeden módulos arbitrarios; por ejemplo, Windows Sidebar.

Por último, los complementos de WPF pueden ser hospedados tanto por aplicaciones independientes como por XBAPs.

Para obtener más información, vea Información general sobre complementos de Windows Presentation Foundation.

Compatibilidad con Firefox para aplicaciones XBAP

Un complemento para WPF 3.5 permite ejecutar XBAPs desde Firefox 2.0. Esta característica no está disponible en WPF 3.0. Entre las características principales se incluyen las siguientes:

  • Si Firefox 2.0 es su explorador predeterminado, las XBAPsrespetan la configuración. Es decir, no se utiliza Internet Explorer para las XBAPs si Firefox 2.0 es la opción predeterminada.

  • Las características de seguridad disponibles para las XBAPs que se ejecutan en Internet Explorer también están disponibles para las XBAPs que se ejecutan en Firefox 2.0, incluido el recinto de seguridad de confianza parcial. Las características de seguridad adicionales proporcionadas por el explorador son específicas del explorador.

Cookies

Las aplicaciones WPF independientes y las XBAPs pueden crear, obtener y eliminar cookies tanto de sesión como persistentes. En WPF 3.5, las cookies persistentes se pueden compartir entre las XBAPs, los servidores web y los archivos HTML que tienen el mismo sitio de origen.

Para obtener más información sobre las cookies, vea Información general sobre navegación.

Mejoras de Visual Studio IntelliSense

Ahora es posible agregar un nuevo elemento XAML mediante el editor XAML de Visual Studio, asignarle un nombre (mediante el atributo Name), hacer referencia a él desde código subyacente y ver sus miembros desde el explorador de IntelliSense.

Localización

WPF 3.5 agrega compatibilidad para los siguientes sistemas de escritura:

  • Bengalí

  • Devanagari

  • Gujarati

  • Gurmukhi

  • Kannada

  • Malayalam

  • Oriya

  • Tamil

  • Telugu

Para obtener más información, vea Globalización para Windows Presentation Foundation.

Compatibilidad con el Editor de métodos de entrada (IME) para el control TextBox

La clase FrameworkTextComposition tiene ahora las siguientes propiedades:

Se utiliza un objeto FrameworkTextComposition como propiedad TextCompositionEventArgs.TextComposition cuando el usuario escribe texto en un control TextBox mediante un IME y se produce el evento TextInput, TextInputUpdate o TextInputStart.

Gráficos

Ahora se pueden almacenar en memoria caché las imágenes que se descargan a través de http en la memoria caché local de archivos temporales de Microsoft Internet Explorer, de modo que las subsiguientes solicitudes de la imagen procedan del disco local en lugar de Internet. En función del tamaño de las imágenes, ésta puede ser una importante mejora de rendimiento de la red. Se han agregado los siguientes miembros para permitir esta característica:

Se ha agregado el evento BitmapSource.DecodeFailed para notificar al usuario cuando no se carga una imagen debido a un encabezado dañado.

Gráficos 3D

Se han agregado las siguientes características nuevas al modelo de objetos 3D.

Compatibilidad con la entrada, el foco y los eventos en 3D

El modelo de objetos 3D admite ahora conceptos de UIElement como la entrada, el foco y los eventos. Las nuevas clases que proporcionan estos servicios son UIElement3D y sus clases derivadas ContainerUIElement3D y ModelUIElement3D. Para obtener ejemplos, vea Ejemplo UIElement3D Sphere y Ejemplo Handling Events in 3-D.

Contenido 2D interactivo en 3D

La nueva clase Viewport2DVisual3D proporciona la compatibilidad necesaria para colocar contenido 2D interactivo en un objeto 3D. Para obtener un ejemplo, vea Ejemplo Interactive 2-D on 3-D.

Nuevos servicios de transformación

Las nuevas clases GeneralTransform3D, GeneralTransform2DTo3D y GeneralTransform3DTo2D permiten las transformaciones entre objetos Visual3D, así como de objetos 2D a objetos 3D y viceversa.

Enlace de datos

Se han realizado las mejoras siguientes en el enlace de datos:

  • Un nuevo mecanismo de depuración facilita la depuración de los enlaces de datos.

  • El modelo de datos permite la validación en la capa de negocios proporcionando compatibilidad para la interfaz IDataErrorInfo. Además, el modelo de validación admite ahora el uso de la sintaxis de propiedad para establecer las reglas de validación.

  • El modelo de enlaces de datos admite ahora LINQ y XLINQ.

Nuevo mecanismo de depuración

Ahora, los enlaces de datos son más fáciles de depurar. Se puede establecer la nueva propiedad adjunta PresentationTraceSources.TraceLevel en un objeto relacionado con el enlace para recibir información sobre el estado de un enlace concreto. PresentationTraceSources es una clase estática en el espacio de nombres System.Diagnostics.

Compatibilidad con IDataErrorInfo

El modelo de validación de datos admite ahora la interfaz IDataErrorInfo para que un objeto de negocios pueda determinar la validez de la entrada. La interfaz define un indizador que toma un nombre de propiedad y devuelve una cadena. Se ha agregado la regla de validación DataErrorValidationRule, que comprueba las excepciones devueltas por el indizador. Para obtener un ejemplo, vea Ejemplo Business Layer Validation.

Sintaxis alternativa para la validación de datos

Las clases Binding y MultiBinding tienen dos propiedades nuevas, ValidatesOnExceptions y ValidatesOnDataErrors. Estas dos propiedades proporcionan una alternativa a establecer ExceptionValidationRule o DataErrorValidationRule en la sintaxis de elementos.

Compatibilidad con LINQ y XLINQ

Se han realizado mejoras en BindingListCollectionView para proporcionar una mejor compatibilidad con el enlace a una colección de tipo BindingList<T> y con LINQ. El comportamiento de los enlaces de datos con un objeto CollectionView sobre una interfaz IEnumerable también se ha mejorado para proporcionar un mayor rendimiento y una mejor compatibilidad con el enlace a los resultados generados por LINQ. Para obtener un ejemplo de LINQ, vea Ejemplo LINQ Query.

Además, el modelo de enlaces de datos también proporciona compatibilidad con XLINQ.

Controles

RichTextBox

El control RichTextBox conserva ahora los objetos TextElement personalizados cuando guarda los objetos TextElement y cuando los objetos TextElement participan en operaciones del portapapeles. Las siguientes nuevas API permiten este comportamiento:

El control RichTextBox tiene una nueva propiedad denominada IsDocumentEnabled. Cuando el valor de IsDocumentEnabled es true, los elementos de la interfaz de usuario, como botones e hipervínculos, aceptan los datos proporcionados por el usuario.

TextBoxBase

TextBoxBase tiene una nueva propiedad denominada UndoLimit, que especifica el número máximo de acciones a las que el control hace referencia.

SoundPlayerAction

SoundPlayerAction puede ahora cargar archivos de audio que pueden ser identificados mediante pack identificadores de recursos uniformes (URIs) relativos y absolutos:

  • Archivos de recursos: archivos de audio con la acción de compilación Resource.

  • Archivos de contenido: archivos de audio con la acción de compilación Content.

  • Archivos de sitio de origen: archivos de audio con la acción de compilación None.

Descriptores de acceso set protegidos

Los descriptores de acceso set de las siguientes propiedades están ahora protegidos, en lugar de ser internos:

Documentos

FlowDocumentPageViewer, FlowDocumentScrollViewer y FlowDocumentReader tienen una nueva propiedad pública denominada Selection. La propiedad obtiene el objeto TextSelection que representa el contenido seleccionado en el documento.

Anotaciones

El marco de trabajo de anotaciones expone ahora las capacidades necesarias para hacer coincidir las anotaciones con los correspondientes objetos anotados. Se ha agregado una nueva interfaz denominada IAnchorInfo. Además, se ha agregado un nuevo método denominado GetAnchorInfo, que devuelve un objeto IAnchorInfo, a la clase AnnotationHelper.

Estas nuevas adiciones permiten la existencia de escenarios en los que se necesite obtener acceso al objeto respecto al que está delimitado el objeto de anotación. Para obtener un ejemplo, vea Ejemplo Annotated Document Viewer with Comments Pane.

Vea también

Tareas

Ejemplo Annotated Document Viewer with Comments Pane

Conceptos

Arquitectura de .NET Framework 3.5

Lo nuevo de .NET Framework versión 3.5

Información general sobre gráficos 3D

Información general sobre el enlace de datos

Información general sobre anotaciones

Referencia

SoundPlayerAction

BitmapImage