stringtranslate.com

Fundación de presentación de Windows

Windows Presentation Foundation ( WPF ) es un subsistema gráfico gratuito y de código abierto (similar a WinForms ) desarrollado originalmente por Microsoft para representar interfaces de usuario en aplicaciones basadas en Windows. WPF, anteriormente conocido como "Avalon", se lanzó inicialmente como parte de .NET Framework 3.0 en 2006. WPF usa DirectX e intenta proporcionar un modelo de programación consistente para crear aplicaciones. Separa la interfaz de usuario de la lógica empresarial y se asemeja a modelos de objetos orientados a XML similares , como los implementados en XUL y SVG . [2]

Descripción general

diagrama de pila de windows dot net tres punto cero
Este subsistema es parte de .NET Framework 3.0 .

WPF emplea XAML , un lenguaje basado en XML , para definir y vincular varios elementos de la interfaz. [3] Las aplicaciones WPF pueden implementarse como programas de escritorio independientes o alojarse como un objeto incrustado en un sitio web. WPF tiene como objetivo unificar una serie de elementos comunes de la interfaz de usuario , como renderizado 2D/3D, documentos fijos y adaptables , tipografía , gráficos vectoriales , animación en tiempo de ejecución y medios prerenderizados. Luego, estos elementos se pueden vincular y manipular en función de diversos eventos, interacciones del usuario y enlaces de datos . [4]

Las bibliotecas de tiempo de ejecución de WPF se incluyen con todas las versiones de Microsoft Windows desde Windows Vista y Windows Server 2008 . Los usuarios de Windows XP SP2/SP3 y Windows Server 2003 pueden instalar opcionalmente las bibliotecas necesarias. [5] [6]

Microsoft Silverlight proporcionó una funcionalidad que es principalmente un subconjunto de WPF para proporcionar controles web integrados comparables a Adobe Flash . La renderización en tiempo de ejecución 3D ha sido compatible con Silverlight desde Silverlight 5. [7]

En el evento Microsoft Connect del 4 de diciembre de 2018, Microsoft anunció el lanzamiento de WPF como proyecto de código abierto en GitHub. Se publica bajo la licencia MIT . Windows Presentation Foundation está disponible para proyectos dirigidos al marco de software .NET ; sin embargo, el sistema no es multiplataforma y todavía está disponible solo en Windows. [8] [9]

Características

directo3D

Los gráficos, incluidos elementos del escritorio como ventanas, se representan mediante Direct3D . Esto permite la visualización de gráficos más complejos y temas personalizados, a costa de una gama más amplia de soporte y control uniforme de temas de GDI . Permite a Windows descargar algunas tareas gráficas a la GPU . Esto reduce la carga de trabajo en la CPU de la computadora . Las GPU están optimizadas para cálculos de píxeles paralelos. Esto tiende a acelerar las actualizaciones de la pantalla a costa de una menor compatibilidad en mercados donde las GPU no son necesariamente tan potentes, como el mercado de netbooks .

El énfasis de WPF en los gráficos vectoriales permite escalar la mayoría de los controles y elementos sin pérdida de calidad o pixelización , aumentando así la accesibilidad. Con la excepción de Silverlight, la integración Direct3D permite una representación 3D optimizada. Además, el contenido 2D interactivo se puede superponer en superficies 3D de forma nativa. [10] [11]

El enlace de datos

Servicios de medios

Plantillas

Plantillas de control

Plantillas de datos

animaciones

Imágenes

Efectos

Documentos

Texto

Interoperabilidad

Para habilitar el uso de WinForms, el desarrollador ejecuta esto desde su código WPF C#:

System.Windows.Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop();

Entrada alternativa

Accesibilidad

XAML

Tras el éxito de los lenguajes de marcado para el desarrollo web, WPF presenta el lenguaje de marcado de aplicaciones extensible ( XAML ; / ˈ z æ m əl / ), que se basa en XML . XAML está diseñado como un método más eficiente para desarrollar interfaces de usuario de aplicaciones. [20] La ventaja específica que XAML aporta a WPF es que XAML es un lenguaje completamente declarativo , que permite al desarrollador (o diseñador) describir el comportamiento y la integración de componentes sin el uso de programación procedimental . Aunque es raro que una aplicación completa se cree completamente en XAML, la introducción de XAML permite a los diseñadores de aplicaciones contribuir de manera más efectiva al ciclo de desarrollo de la aplicación. El uso de XAML para desarrollar interfaces de usuario también permite la separación del modelo y la vista, lo que se considera un buen principio arquitectónico. En XAML, los elementos y atributos se asignan a clases y propiedades en las API subyacentes.

Al igual que en el desarrollo web, tanto los diseños como los temas específicos se adaptan bien al marcado, pero no se requiere XAML para ninguno de los dos. De hecho, todos los elementos de WPF pueden codificarse en un lenguaje .NET ( C# , VB.NET ). En última instancia, el código XAML se puede compilar en un ensamblado administrado de la misma manera que lo hacen todos los lenguajes .NET.

Arquitectura

La arquitectura WPF. Los elementos azules son componentes de Windows; los marrones son componentes de WPF.

La arquitectura de WPF abarca componentes de código administrado y código nativo . Sin embargo, la API pública expuesta solo está disponible mediante código administrado. Si bien la mayor parte de WPF se encuentra en código administrado, el motor de composición que representa las aplicaciones WPF es un componente nativo. Se denomina Capa de integración de medios (MIL) y reside en milcore.dll. Interactúa directamente con DirectX y proporciona soporte básico para superficies 2D y 3D, manipulación controlada por temporizador del contenido de una superficie con miras a exponer construcciones de animación a un nivel superior y componer los elementos individuales de una aplicación WPF en un 3D final. scene" que representa la interfaz de usuario de la aplicación y la muestra en la pantalla. [21] [22] Desktop Window Manager también utiliza MIL para la composición de escritorios y ventanas. [23] Los códecs multimedia también se implementan en código no administrado y se envían como windowscodecs.dll. [21] En el mundo administrado, PresentationCore ( presentationcore.dll) proporciona un contenedor administrado para MIL e implementa los servicios principales para WPF, [21] incluido un sistema de propiedad que conoce las dependencias entre los configuradores y consumidores de la propiedad, un mensaje que envía sistema por medio de un Dispatcherobjeto para implementar un sistema de eventos especializado y servicios que pueden implementar un sistema de diseño, como la medición de elementos de la interfaz de usuario. [22] PresentationFramework ( presentationframework.dll) implementa las características de presentación del usuario final, incluidos diseños, animaciones basadas en guiones gráficos dependientes del tiempo y enlace de datos. [22]

WPF expone un sistema de propiedades para objetos que heredan de DependencyObject, que conoce las dependencias entre los consumidores de la propiedad y puede desencadenar acciones basadas en cambios en las propiedades. Las propiedades pueden ser valores o expresiones codificados, que son expresiones específicas que se evalúan como un resultado. Sin embargo, en la versión inicial, el conjunto de expresiones admitidas está cerrado. [22] El valor de las propiedades también se puede heredar de los objetos principales. Las propiedades de WPF admiten notificaciones de cambios , que invocan comportamientos vinculados cada vez que se cambia alguna propiedad de algún elemento. Se pueden utilizar comportamientos personalizados para propagar una notificación de cambio de propiedad en un conjunto de objetos WPF. El sistema de diseño lo utiliza para activar un recálculo del diseño en cambios de propiedades, exponiendo así un estilo de programación declarativa para WPF, mediante el cual casi todo, desde establecer colores y posiciones hasta animar elementos, se puede lograr estableciendo propiedades. [22] Esto permite que las aplicaciones WPF se escriban en XAML , que es un lenguaje de marcado declarativo, vinculando las palabras clave y los atributos directamente a las clases y propiedades de WPF. [24]

Los elementos de la interfaz de una aplicación WPF se mantienen como una clase de Visualobjetos. Los objetos visuales proporcionan una interfaz administrada para un árbol de composición mantenido por Media Integration Layer (MIL). Cada elemento de WPF crea y agrega uno o más nodos de composición al árbol. Los nodos de composición contienen instrucciones de representación, como instrucciones de recorte y transformación, junto con otros atributos visuales. Por tanto, toda la aplicación se representa como una colección de nodos de composición, que se almacenan en un búfer en la memoria del sistema. Periódicamente, MIL recorre el árbol y ejecuta las instrucciones de renderizado en cada nodo, componiendo así cada elemento en una superficie DirectX, que luego se representa en la pantalla. MIL utiliza el algoritmo del pintor , donde todos los componentes se representan desde la parte posterior de la pantalla hacia el frente, lo que permite lograr fácilmente efectos complejos como transparencias. Este proceso de renderizado se acelera por hardware mediante la GPU. [22] MIL almacena en caché el árbol de composición, lo que crea un modo retenido de gráficos , de modo que cualquier cambio en el árbol de composición solo debe comunicarse de forma incremental a MIL. Esto también libera a las aplicaciones de gestionar el repintado de la pantalla; MIL puede hacerlo por sí mismo ya que tiene toda la información necesaria. Las animaciones se pueden implementar como cambios activados por tiempo en el árbol de composición. En el lado visible para el usuario, las animaciones se especifican de forma declarativa, estableciendo algún efecto de animación en algún elemento mediante una propiedad y especificando la duración. El código subyacente actualiza los nodos específicos del árbol, a través de Visualobjetos, para representar tanto los estados intermedios en intervalos de tiempo específicos como el estado final del elemento. MIL representará los cambios en el elemento automáticamente. [25] Todas las aplicaciones WPF comienzan con dos subprocesos: uno para administrar la interfaz de usuario y otro subproceso en segundo plano para manejar el renderizado y el repintado. [26] El renderizado y el repintado son gestionados por el propio WPF, sin ninguna intervención del desarrollador. El subproceso de la interfaz de usuario alberga el Dispatcher (a través de una instancia de DispatcherObject), que mantiene una cola de operaciones de la interfaz de usuario que deben realizarse (como un árbol de Visualobjetos), ordenadas por prioridad. Los eventos de la interfaz de usuario, incluido el cambio de una propiedad que afecta el diseño, y los eventos de interacción del usuario generados se ponen en cola en el despachador, que invoca a los controladores de los eventos. Microsoft recomienda que los controladores de eventos solo actualicen las propiedades para reflejar el contenido nuevo para la capacidad de respuesta de la aplicación, y que el contenido nuevo se genere o recupere en un subproceso en segundo plano. [26]El subproceso de renderizado toma una copia del árbol visual y recorre el árbol calculando qué componentes serán visibles y los renderiza en superficies Direct3D. El hilo de renderizado también almacena en caché el árbol visual, por lo que solo es necesario comunicar los cambios en el árbol, lo que resultará en la actualización solo de los píxeles modificados. WPF admite un modelo de diseño extensible. El diseño se divide en dos fases: Medida ; y Organizar . La fase de Medición llama recursivamente a todos los elementos y determina el tamaño que tomarán. En la fase Organizar , los elementos secundarios son ordenados recursivamente por sus padres, invocando el algoritmo de diseño del módulo de diseño en uso. [22] [27]

Herramientas

Hay varias herramientas de desarrollo disponibles para desarrollar aplicaciones de Windows Presentation Foundation.

herramientas de microsoft

Herramientas de terceros

Despliegue

El modelo de implementación de WPF ofrece versiones de aplicaciones de navegador XAML ( XBAP, pronunciadas "ex-bap") tanto independientes como independientes. El modelo de programación para crear cualquier tipo de aplicación es similar.

Las aplicaciones independientes son aquellas que se han instalado localmente en la computadora mediante software como ClickOnce o Windows Installer (MSI) y que se ejecutan en el escritorio. Las aplicaciones independientes se consideran de plena confianza y tienen acceso total a los recursos de una computadora.

Las aplicaciones de navegador XAML ( XBAP ) son programas alojados dentro de un navegador web . Las aplicaciones XBAP anteriores a .NET4 se ejecutan en un entorno de pruebas de confianza parcial , no reciben acceso completo a los recursos de la computadora y no todas las funciones de WPF están disponibles. El entorno alojado tiene como objetivo proteger la computadora de aplicaciones maliciosas. Los XBAP pueden ejecutarse como aplicaciones totalmente confiables en .NET 4, con acceso completo a los recursos de la computadora. Iniciar un XBAP desde una página HTML o viceversa es sencillo (no hay ningún mensaje de seguridad ni de instalación). Aunque uno tiene la percepción de que la aplicación se ejecuta en el navegador, en realidad se ejecuta en un ejecutable fuera de proceso diferente al del navegador.

explorador de Internet

A partir del lanzamiento de .NET Framework 3.0, los XBAP solo se ejecutarían en IE.

Soporte para Firefox

Con el lanzamiento de .NET Framework 3.5 SP1, XBAP también se ejecuta en Mozilla Firefox usando la extensión incluida. El 16 de octubre de 2009, Mozilla añadió el complemento y la extensión de Firefox a su lista de bloqueo de complementos, debido a una vulnerabilidad de seguridad grave explotable de forma remota, de acuerdo con Microsoft. [33] Dos días después, se eliminó el bloqueo. En Windows 7, el complemento de Firefox no se ejecuta de forma predeterminada. [34] Una reinstalación de .NET Framework 3.5 SP1 instalará el complemento y agregará soporte para aplicaciones XBAP en Firefox. [35] Alternativamente, copiar las DLL del complemento desde una instalación funcional de Windows XP/Vista al directorio de complementos de Mozilla Firefox también restablecerá el soporte para aplicaciones XBAP. [35] Las DLL del complemento WPF residen en los siguientes directorios (según la versión de Framework):

3.5 [SP1]
C:\Windows\Microsoft.NET\Framework\v3.5\WPF\NPWPF.dll
4.0
C:\Windows\Microsoft.NET\Framework\WPF\NPWPF.dll

Microsoft Silverlight

Silverlight (con nombre en código WPF/E) es un complemento de navegador cruzado en desuso que contenía tecnología basada en WPF (incluido XAML) [36] que proporcionaba funciones como vídeo, gráficos vectoriales y animaciones para múltiples sistemas operativos, incluidos Windows 7 , Windows Vista. , Windows XP y Mac OS X . Microsoft sancionó a un número limitado de desarrolladores externos para trabajar en puertos para ciertas distribuciones de Linux . [37] Específicamente, se proporcionó como un complemento para Mozilla Firefox , Internet Explorer 6 y superior, Google Chrome 42 y inferior y Apple Safari .

Micro marco .NET

.NET Micro Framework incluye un modelo de objetos GUI basado libremente en WPF, aunque sin soporte para XAML.

Referencias

  1. ^ "v8.0.0". github.com . 2023-11-14 . Consultado el 21 de noviembre de 2023 .
  2. ^ Nathan, Adán (2006). Fundación para presentaciones de Windows desatada. Educación Pearson. ISBN 9780132715621.
  3. ^ dotnet-bot. "Descripción general de XAML (WPF)". msdn.microsoft.com . Consultado el 31 de marzo de 2018 .
  4. ^ Vende, Chris; Griffiths, Ian (2007). Programación de WPF: creación de la interfaz de usuario de Windows con Windows Presentation Foundation. "O'Reilly Media, Inc.". ISBN 9780596554798.
  5. ^ ".NET". Microsoft . Consultado el 31 de marzo de 2018 .
  6. ^ "Descarga de Microsoft .NET Framework 3.0". microsoft.com . Consultado el 31 de marzo de 2018 .
  7. ^ Recursos de aprendizaje de Silverlight. Silverlight.net. Recuperado el 29 de agosto de 2013.
  8. ^ Martin, Jeff (4 de diciembre de 2018). "Microsoft Open Sources WPF, WinForms y WinUI". InfoQ . Consultado el 6 de diciembre de 2018 .
  9. ^ Hanselman, Scott (4 de diciembre de 2018). "Anuncio de que WPF, WinForms y WinUI se convertirán en código abierto" . Consultado el 6 de diciembre de 2018 .
  10. ^ "Presentación de Windows Presentation Foundation". msdn.microsoft.com . Consultado el 31 de marzo de 2018 .
  11. ^ ab "¿Qué hay de nuevo en WPF 3.5? Aquí hay quince funciones interesantes ..." Consultado el 14 de octubre de 2007 .
  12. ^ Gráficos y Multimedia. Msdn.Microsoft.com. Recuperado el 29 de agosto de 2013.
  13. ^ abcd "Descripción general de la animación". MSDN . Consultado el 14 de octubre de 2007 .
  14. ^ "Tipografía en Windows Presentation Foundation". msdn.microsoft.com . Consultado el 31 de marzo de 2018 .
  15. ^ dotnet-bot. "Descripción general de ClearType". msdn.microsoft.com . Consultado el 31 de marzo de 2018 .
  16. ^ "Desactivar antialiasing". social.msdn.microsoft.com . Consultado el 31 de marzo de 2018 .
  17. ^ "Mis primeros pensamientos sobre WPF con VS 2008 RTM y algunas preguntas". social.msdn.microsoft.com . Consultado el 31 de marzo de 2018 .
  18. ^ WPF 4 (series VS 2010 y .NET 4.0): blog de ScottGu. Weblogs.asp.net. Recuperado el 29 de agosto de 2013.
  19. ^ Xansky. "Descripción general de la automatización de la interfaz de usuario". msdn.microsoft.com . Consultado el 31 de marzo de 2018 .
  20. ^ MacDonald, Mateo (2010). Pro WPF en VB 2010: Windows Presentation Foundation en .NET 4. Apress. ISBN 9781430272403.
  21. ^ a b C Chris Anderson. "Información MIL" . Consultado el 14 de octubre de 2007 .
  22. ^ abcdefg "Arquitectura WPF". MSDN . Consultado el 14 de octubre de 2007 .
  23. ^ Schechter, Greg (9 de junio de 2006). "Cómo se utilizan los conceptos y la tecnología subyacentes de WPF en DWM". Blogs de MSDN . Microsoft . Consultado el 27 de julio de 2015 .
  24. ^ "Crear una aplicación WPF en Visual Studio". docs.microsoft.com .
  25. ^ "Arquitectura WPF". docs.microsoft.com .
  26. ^ ab "Modelo de roscado". MSDN . Consultado el 14 de octubre de 2007 .
  27. ^ "El sistema de diseño". MSDN . Consultado el 14 de octubre de 2007 .
  28. ^ Obtenido de http://www.microsoft.com/en-au/download/details.aspx?id=23072.
  29. ^ Wille, Christoph. "SharpDevelop @ic#código". icsharpcode.net . Consultado el 31 de marzo de 2018 .
  30. ^ Herramienta de desarrollo de aplicaciones enriquecidas/entorno de programación declarativa | PowerBuilder - Sybase Inc. Sybase.com. Recuperado el 29 de agosto de 2013.
  31. ^ "Controles WPF para sus aplicaciones de escritorio modernas". www.syncfusion.com . Consultado el 17 de febrero de 2021 .
  32. ^ "Avalonia XPF - WPF multiplataforma". www.avaloniaui.net . Consultado el 26 de febrero de 2023 .
  33. ^ "Asistente de NET Framework bloqueado para desarmar la vulnerabilidad de seguridad" . Consultado el 17 de octubre de 2009 .
  34. ^ "Complementos de Firefox para admitir la implementación de aplicaciones .NET" . Consultado el 7 de septiembre de 2010 .
  35. ^ ab "Complemento Xbap para Firefox en Windows 7" . Consultado el 29 de septiembre de 2010 .
  36. ^ "El sitio oficial de Microsoft ASP.NET". El sitio oficial de Microsoft ASP.NET . Consultado el 31 de marzo de 2018 .
  37. ^ "Se lanzó Silverlight 1.0 y se anunció Silverlight para Linux" . Consultado el 5 de septiembre de 2007 .

Bibliografía

enlaces externos