WPF 4

Este es el décimo primer post de una serie que estoy escribiendo sobre las próximas versiones de Vs 2010 y NET 4.

Mejoras en WPF 4

WPF (Windows Presentation Foundation) es uno de los componentes principales del .NET Framework, y permite crear aplicaciones para windows ricas y diferenciadas del resto. WPF 4 incluye mejoras con respecto a la productividad, rendimiento y capacidades – en particular en las areas de Controles, XAML, texto, gráficos, integración con Windows 7 (multitouch, integración en el taskbar, etc), fundamentos del núcleo, y despliegue. Este es el primero de varios posts en los que hablaré de algunas de las mejoras y nuevas características

Controles

Controles para crear clientes ricos

WPF 4 añade una variedad de nuevos controles que hacen que crear aplicaciones empresariales ricas sea mucho más rápido y sencillo. El nuevo, conjunto de controles incluyen diferentes DataGrids, DatePickers y Calendarios. Estos nuevos controles son compatibles al 99% con los correspondientes de Silverlight, permitiendo crear experiencias de usuario similares en la web y en clientes windows, consiguiendo reutilizar código entre implementaciones Silverlight y WPF.

Bag O’Tricks está de vuelta

También publicamos una colección de ocho controles a los que llamamos WPF Bag O’Tricks. Incluye los siguientes controles: AnimatingTilePanel, ColorPicker, InfoTextBox, ListPager, NumericUpDown, Reveal, TransitionsPresenter, TreeMapPanel.

Control Windows 7 & Office Ribbon.

Un nuevo control estará disponible para descarga después de la release de WPF 4.  Cuenta con skins para Windows 7 y Office, así como las características con las que los usuarios están acostumbrados a trabajar, como tabs, groups, escalado dinámico, accesos rápidos para el toolbar, menú de aplicación, tabs contextuales, y más.

Este control será totalmente extensible para ajustarse a las guías de futuras releases. Una versión CTP está disponible con limitadas características aquí.

Gráficos

Composición en caché

Las mejoras en el rendimiento son posibles gracias a la nueva característica de Composición en caché de WPF 4, que permite a las aplicaciones cachear contenido arbitrario incluyendo controles vivos e interactivos, geometría vectorial, etc. como bitmaps que son persistidas en la memoria de video. Una vez cacheados, estos elementos pueden ser tranformados arbitrariamente, animados, manipulados, y podemos aplicarles efectos, todo sin tener que re-renderizar el elemento cacheado.

 

Esto libra tanto a la CPU como a la GPU del coste de re-renderizar contenidos, y en lugar de eso, permite a la GPU renderizar directamente de la cache. La caché entiende de regiones sucias, así que un cursor parpadeante en un textblock cacheado, por ejemplo, sólo necesitará re-renderizar el cursor entre frame y frame. Incluso hay una nueva brocha (Brush) que usa específicamente estas caches inteligentes – efectivamente un VisualBrush con un mejor rendimiento.

Soporte para Pixel Shader 3

WPF 4 se ha creado sobre el popular soporte de ShaderEffect que se introdujo en WPF 3.5 SP1 permitiendo a las aplicaciones escribir efectos usando la versión 3 de Pixel Shader. El modelo de Shader de PS 3.0 es mucho más sofisticado que el de PS 2.0, permitiendo crear muchos más efectos en el hardware que lo soporta.

LayoutRounding

WPF 4 adopta la propiedad UseLayoutRounding, introducida originalmente en Silverlight 2. El motor de layout de WPF calcula frecuentemente las coordenadas de posición de los sub-pixels. Esto puede llevar a renderizar artefactos como elemenetos posicionados alrededor de esas zonas son anti-aliased sobre múltiples pixels físicos.

UseLayoutRounding forzará al motor de layout a emplazar elementos en los límites de los pixels, eliminando los artefactos renderizados que causan este problema – consiguiendo una interfaz de usuario más limpia por defecto.

Funciones de aceleración.

Las animaciones spline y lineales eran compatibles con las versiones anteriores de WPF. WPF 4 introduce el nuevo concepto de Easing Functions (funciones de animación) – que permiten a los creadores de aplicaciones crear animaciones fluidas. Esto puede ser usado de infinidad de maneras, como crear comportamientos, o añadir la anticipación a una animación. Las funciones de aceleración personalizan la forma de comenzar las animaciones y terminar. Las funcinoes de aceleración incluidas proveen un rango de comportamientos como el circular, exponencial, elástico y de rebote. La capacidad de amplicación nos permiten crear nuestras propias funciones para definir el progreso de esas animaciones. Con esta capacidad tan fácil de usar, los diseñadores pueden crear animaciones fluidas y orgánicas.

CleartypeHint

La nueva propiedad CleartypeHint permite a los programadores habilitar un renderizado de gran calidad en los textos en muchas situaciones en las que ántes estaba deshabilitado. Esas situaciones incluyen texto en ventanas por capas, texto en VisualBrushes, DrawingBrushes, BitmapCacheBrushes, y en cualquier lugar en el que la introducción de un renderizado producía un renderizado en escala de grises de texto.

Pila de texto

Nueva pila de renderizado de texto

La pila de renderizado de texto de WPF se ha cambiado completamente – un cambio que nos trae mejoras significativas en la claridad, configurabilidad y el soporte de lenguas internacionales. La nueva pila de texto soporta una layout de texto optimizado, para producir texto con una nitidez comparable a la de Win32/GDI:

La nueva pila de texto también soporta explicitamente modos de renderizado en escala de grises, ClearType y aliased:

La nueva pila de texo permite la optimización de resaltar texto tanto en texto animado como estático. ADemás, la nueva pila de texto soporta fuentes con bitmaps embebidos. Esto permite que se puedan renderizar muchas fuentes del este asiático con la calidad a la que están acostumbrados los usuarios de Win32.

BindableRun

Desde la versión inicial de WPF, la propiedad Run.Text ha sido una porpiedad del CLR normal. Esto ha significado que Run.Text no sacaba provecho del sistema de dependencias de WPF, en concreto la habilidad de ser enlazada. En WPF 4, la hemos convertido a una propiedad dependiente que permite a los desarrolladores usarla. Podéis encontrar más detalles aquí.

Diccionarios personalizados.

WPF incluye un analizador sintáctico que ántes de WPF 4 se usaba el diccionario del Sistema Operativo. Esto a sido un problema en aplicaciones creadas para ciertas industrias en las que se usa terminología especializada, ya que aquellas aplicaciones estaban plagadas de notificaciones erroenas. WPF 4 ha introducido una API para permitir que las aplicaciones añadan palabras a los diccionarios usados por WPF. Podeis encontrar más detalles aquí.

Brochas de selección e intercalación

En un pulso para permitir una personalización más rica de la apariencia de las aplicaciones WPF, los desarrolladores pueden cambiar el pincel utilizado para pintar la selección de texto WPF y la intercalación a través de las propiedades: SelectionBrush y CaretBrush:

Detalles para Windows 7

Soporte Multitouch de Windows 7

Con la introducción del multitouch y el soporte de procesado de manipulación, WPF 4 nos ofrece una forma genial de mejoras nuestras aplicaciones en Windows 7. La entrada de varios dedos se exponen a traves de eventos ya existentes y nuevos eventos de entrada en WPF 4, mientras que se crean nuevos eventos de manipulación y de inercia. Por ahora las características que están incluidas son:

  • Manipulación Multitouch, Inercia (Pan, Zoom, Rotate) sobre los UIElements.
  • Eventos multitouch (Up, Move, Down) en UiElement, UIElement3D y ContentElement.
  • Soporte de captura múltiple para varios controles activos.
  • Mejora del ScrollViewer para el soporte de Multitouch panning.
  • Extensibilidad del dispositivo Touch.
  • Compatibilidad con la SDK de Surface

Integración en la shell de Windows 7

WPF 4 también pone a disposición de los desarrolladores varias características de la shell de Windows 7. Estas características permiten una experiencia de usuario más rica e integrada. La nueva barra de tareas está menos congestionada y puede mostrar más información de una sola vez. Los thumbnails de Aero soportan comandos de usuario. Las listas proveen acceso a tareas contextuales y a archivos disponibles de la aplicación.

WPF 4 integra la funcinoalidad de saltos de lista de Windows 7:

  • Tareas
  • Elementos
  • Listas recientes
  • Categorías personalizadas

La integración con la barra de tareas incluye:

  • Barra de progreso
  • Icono de superposición
  • Botones Thumbnail con soporte para comandos
  • Descripción de Texto DWM

En Windows 7, la barra de tareas ha sido rediseñadas para que esté menos aglomerada y para ayudar a los usuarios a realizar tareas con menos clics. WPF 4 ofrece la integración con la barra de tareas de Windows 7 en XAML, permitiendo que las aplicaciones puedan mostrar información utir desde la barra de tareas usando overlays, barras de progreso, barras de herramientas, descripciones.

También hay una nueva clase en WPF 4 TaskbarItemInfo que es expuesta como una propiedad dependiente. Encapsula todas las características introducidas en Windows 7.

Superposiciones de iconos

La superposición de iconos permite que una aplicación haga notificaciones y muestre su estado al usuario a través del boton de la barra de tareas mostrando pequeñas superposiciones que aparecerán en la esquina derecha del botón.

Barra de progreso

Se puede usar un botón de la barra de tareas para mostrar información de progreso al usuario sin que tenga que cambiar a la ventana de la aplicación. Las barras de progreso se pueden usar para mostrar el progreso de una copia de archivos, descargas, instalaciones, gravaciones, o cualquier otra operación que vaya a tardar algún tiempo.

Barra de herramientas Thumbnails

Estas barras de herramientas permiten aceder a comandos clave de la aplicación sin que el usuario tenga que saltar a la ventana principal de la aplicación. Esta caracgterística permite a los autores de aplicaciones añadir funcionalidad a las previews de las ventanas de las aplicaciones. La aplicación puede mostrar, permitir, desactivar, o esconder botones de la barra de herramientas según su estado:

FUNDAMENTOS DE WPF

Nuevo parser XAML/BAML

WPF 4 a reemplazado su implementación de XamlReader.Load(), carga de BAML, las funcionalidades de Control & DataTem`plates con un nuevo motor encima del nuevo System.Xaml.dll. Como parte de este esfuerzo, hemos corregido muchos bugs y hemos mejorado muchas funcionalidades. Los usuarios de XamlReader.Load() pueden aprovechar nuevas características en XAML2009 como el soporte de tipos genéricos, MarkupExtensions y TypeConverters pueden tener más servicios durante la creación del grafo de objetos, permitiendo más escenarios, como el acceso al objeto Root. Las herramientas para analizar y manipular XAML serán más sencillas de crear con cualquiera de las nuevas APIs de bajo nivel proporcionadas por System.Xaml.dll

Soporte de DataBinding para DLR

Al contrario que las clases CLR, los miembros de objetos dinámicos se definen en tiempo de ejecución. DynamicObject es una clase abstracta y nueva en .NET 4 que permite a los desarrolladores crear fácilmente implementaciones de IDynamicMetaObjectProvider. Con el nuevo soprte de DLR de C#, esperamos algunas implementaciones para empezar a usar DynamicObject y IDynamicMetaObjectProvider como una forma estándar de exponer propiedades  y miembros definidos en tiempo de ejecución. El soporte de databinding de WPF 4 para IDynamicMetaObjectProvider permitirar el uso de sintaxis natural de propiedades para acceder a ellas.

Esta característica extiende el motor de databinding de WPF para mapear propiedades existentes y ofrecer acceso a los miembros dinámicos ofrecidos por IDynamicMetaObjectProvider.

Visual State Manager (VSM)

Otra nueva característica que soporta el continuo WPF-Silverlight es el VisualStateManager, que introduce una forma nueva y simple de aplicar estados visuales a controles. El mecanismo ofrece una forma sencilla de personalizar la apariencia de un control mapeando la lógica del control respecto a los estados visuales de incio y fin.

VSM es muy flexible en tanto que genera automáticamente la transición de animaciones entre los estados correspondientes, de manera que el autor del contorl gasta menos tiempo escribiendo código y pasa más tiempo definiendo los estados visuales. Esto significa que VSM da al autor del control la habilidad de intercambiar la apariencia de controles más fácilmente, y VSM también permite definir el comportamiento de un control con respecto a la interacción con el usuario. ESto está totalmente soportado con Expression Blend.

Interoperatibilidad HTML-XBAP

WPF 4 introduce la comunicación directa entre XBAP y scripts hosteados en una página HTML (donde se carga el XBAP en un HTML frame o en un elemento IFrame). El XBAP puede acceder al HTML DOM, incluyendo cualquer control ActiveX embebido en la página HTML y puede administrar cualquier evento DOM.

WPF expone el objeto principal del script desde el frame host. Es un objeto dinámico que representa el objeto de la ventana del frame más las funciones script personalizadas y variables globales del script en la página HTML. Desde él, una aplicación puede invocar las funciones del script diretamente o con “punto Intro” del HTML DOM. La funcionalidad está disponible en confianza parcial en todas las versiones soportadas de Internet Explorer y Firefox.

Virtualización UIAutomation

WPF ha introducido controles virtualizados en releases anteriores; sin embargo nunca había habido una forma para que un cliente interactuase con un control virtualizado. Dos controles, ItemsContainerPattern y VirtualizedItemPattern, se han añadido en WPF 4 para soportar el acceso y la interacción con elementos virtualizados. ItemsContainerPattern se usa para acceder a controles virtualizados y encontrar elementos virtualizados, y VirtualizedItemPattern se usa para realizar elementos virtualizados.

Patrón SynchroinzedInput

Este es otro patrón de UIA añadido en WPF 4. Este patron puede usarse por clientes automáticos para trazar cuando se enruta un evento al elemento correcto del framework de WPF. Este patrón tiene tres eventos asociadoes, viz.InputReachedTargetEvent, InputReachedOtherEvent y InputDiscardedEvent para indicar donde se ha realizado la entrada.

DESPLIEGUE CLIENTE

Plantilla de cliente en .NET 4

Para mejorar el tamaño de despliegue, el tiempo y toda la experiencia de despliegue de aplicaciones .NET 4, existe una versión más compacta d .NET que es un subconjunto de .NET 4 – llamada .NET Framework 4 Client Profile. El tamaño actual es de unos 30 MB. .NET 4 es un superconjunto del Client Profile.

El objetivo de este paquete es mejorar y ayudar al tiempo de despliegue en tamaño, tiempo, seguridad y mejorar toda esa experiencia en aplicaciones cliente. Contiene las funcionalidades más comunes en aplicaciones de escritorio (incluyendo Windows Forms y WPF). Por est razón, la mayoría de plantillas de proyectos de Visual Studio 2010 Beta2 usan el .NET Framework 4 Beta 2 Client Profile por defecto.

Al contrario que con .NET 3.5 SP1 Client Profile, se ha hecho una mejora considerable en el Client Profile de .NET4 y es que está soportado en todas las plataformas y Sistemas operativos, incluyendo aquellos soportados por el framework completo como Windows Vista, XP, Windows Server 2003 y 2008, Windows 7, tanto en x86 como x64.

Podéis ver o cambiar la versión del framework que usaréis abriendo las propiedades de vuestro proyecto, y seleccionando la página de “Application”. Ahí podéis cambiar el “Target framework”. La página Publish también nos permite seleccionar los prerequisitos necesarios para el despliegue con ClickOnce. En la Beta 2, VS 2010 selecciona automáticamente el profile correcto dependiendo del proyecto principal que tengáis.

El mismo diálogo anterior aparece cuando creais proyectos de instalación y despliegue (En el menú “Add New Project/Other Project Types”. El prerequisito de .NET 4 Client Profile está seleccionado por defecto

Mejoras del .NET 4 Client Profile vs. .NET 3.5 SP1

Aunque el concepto del Client Profile no es nuevo y se introdujo en .NET 3.5 SP1, el Client Profile de .NET 4 incluye importantes mejoras:

  .NET Framework 4 Client Profile (NEW) .NET Framework 3.5 SP1 Client Profile
Sistemas soportados Soportado en todas las plataformas y Sistemas operativos soportados por el Framework 4.0 (exceptio IA64 y el  Server Core role en W2K8) Soportado sólo en máquinas XP de 32 bits sin ninguna versión del framework instalada.

(La instalación de Client Profile instala el framework 3.5 completo)

Redistributable Soporta los redistributables al igual que las descargas web Tan sólo soporta la descarga web
Entradas en Agregar o Quitar Programas La versión completa del Framework comprime el ClientProfile y otra parte llamada “Extended”.De forma que habrá dos entradas en Agragar o quitar Programas 

Si instalaste la versión completa podéis cambiar a Client Profile eliminando la entrada “Extended” de Agregar o quitar programas.

Una sola entrada en Agregar o quitar programas
Visual Studio Soporte mejorado para Client Profile en Visual Studio 2010.

Por defecto muchos proyectos de Visual Studio 2010 Beta2 enlazan directamante con NET4 Client Profile.

Checkbox único en las propiedades de proyecto de Visual Studio 2008 Service Pack 1 “Application” en proyectos .NET Framework 3.5 projects. Client Profile no está soportado  out-of-the-box en VS 2008.
Características  Incluye nuevas características de .NET 4 (como  Managed Extensibility Framework (MEF), C# 4 Dynamic Keyword, etc) así como caracterísitcas incluidas en NET 3.5 SP1 Full (Speech, WPF Spell Check, etc) Subconjunto de caracterísitcas de .NET 3.5 SP1 Full

Como .NET 4 puede coexistir con otras versiones de .NET, la instalación de .NET 4 no requiere que haya versiones anteriores de .NET en la máquina. Esto quiere decir que .NET 4.0 Client PRofile se instala mucho más rápido en una máquina que el Client Profile de .NET 3.5 SP1.

Despliegue Full Trust de XBAP

A partir de WPF4, La elevación de permisos de Click Once también está habilitada para aplicaciones de Navegador XAML (XAML Browser Applications, XBAPs) en Intranet y en la zona de confianza, haciendo más sencillo despleguar aplicaciones full-trust XBAP. Para aplicaciones XBAP que requieran permisos de seguridad mayores que los mínimos para Intranet y zonas de confianza, el usuario será capaz de hacer clic en “Run” cuando navege al XBAP para permitir que la aplicacion se ejecute con los permisos necesarios.

Resumen

Como diréis más abajo – hay un montón de nuevas funcionalidades en WPF 4. Aquí tenéis unos cuantos enlaces a recursos que podéis seguir para ver algunas de esas funcionalidades.

  • Channel 9: Chipalo Street cuenta lo nuevo y mejorado en WPF 4 Text
  • Chipalo también tiene una serie de post en los que se mete de lleno con la pila de texto de WPF 4
  • Channel 9: Un primer vistazo a WPF 4 Graphics con David Teitlebaum
  • Channel 9: Jossef Goldberg nos cuenta lo nuevo del Client Profile in .NET Framework 4
  • Jossef también tiene unos post detallados introducen .NET 4 Client Profile y detalla  lo nuevo de .NET 4 Beta 2 Client Profile
  • Channel 9: Mark Wilson-Thomas demos de lo nuevo en los diseñadores de Visual Studio 2010 para  WPF  y Silverlight 
  • y una serie de Hands on labs y videos en Windows Client.net
  • Jaime Rodriguez destaca algunas características nuevas de WPF 4 y del Diseñadoren Visual Studio 2010 Beta 2
  • Haré más posts en los meses siguientes sobre nuevas capacidades de WPF 4 y cómo aprovecharlas. También estoy trabajando en un post sobre las cosas nuevas de los diseñadores de WPF y Silverlight de VS 2010 – que nos permitirá crear aplicaciones realmente increibles directamente en VS 2010

    Espero que sirva.

    Scott

    Traducido por: Juan María Laó Ramos

    Artículo original.

    0 comentarios sobre “WPF 4”

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *