Windows Presentation Foundation ( WPF ) es un análogo de WinForms, un sistema para crear aplicaciones cliente de Windows con capacidades de interacción con el usuario visualmente atractivas, un subsistema gráfico (de presentación) como parte de .NET Framework (a partir de la versión 3.0 ), que utiliza el lenguaje XAML [1] .
WPF está preinstalado en Windows Vista ( .NET Framework 3.0), Windows 7 ( .NET Framework 3.5 SP1), Windows 8 (.NET Framework 4.0 y 4.5), Windows 8.1 (.NET Framework 4.5.1) y Windows 10 (.NET Marco 4.7). Con WPF, puede crear una amplia variedad de aplicaciones independientes y basadas en navegador [2] .
En el corazón de WPF se encuentra un sistema de representación vectorial que no depende de la resolución del dispositivo de salida y se creó teniendo en cuenta las capacidades del hardware de gráficos moderno. WPF proporciona herramientas para crear una interfaz visual, incluidos XAML (lenguaje de marcado de aplicaciones extensible), controles, enlace de datos, diseños, gráficos 2D y 3D, animación, estilos, plantillas, documentos, texto, multimedia y decoración [2] .
La tecnología gráfica detrás de WPF es DirectX , a diferencia de Windows Forms , que utiliza GDI / GDI+ [3] . El rendimiento de WPF es superior al de GDI+ debido al uso de aceleración de hardware de gráficos a través de DirectX .
También hay una versión simplificada de CLR llamada WPF/E , también conocida como Silverlight .
XAML es un lenguaje de descripción de interfaz declarativo basado en XML . También se ha implementado un modelo para separar código y diseño, lo que permite que el programador y el diseñador cooperen. Además, hay soporte integrado para estilos de elementos, y los elementos mismos se dividen fácilmente en controles de segundo nivel , que, a su vez, se dividen hasta el nivel de formas vectoriales y propiedades/acciones. Esto facilita el estilo de cualquier elemento, como un botón .
Se requiere cualquier lenguaje compatible con .NET para trabajar con WPF . Esta lista incluye muchos lenguajes: C# , F# , VB.NET , C++ , Ruby , Python , Delphi (Prism) , Lua y muchos más. Para un trabajo completo, se pueden usar tanto Visual Studio como Expression Blend . El primero está orientado a la codificación y el segundo está orientado al diseño y le permite hacer muchas cosas sin tener que editar XAML manualmente . Ejemplos de esto son la animación, el estilo, los estados, la creación de controles, etc.
WPF proporciona una amplia gama de opciones para crear aplicaciones de escritorio interactivas:
Es un mecanismo flexible que le permite vincular varios datos a través de extensiones de marcado XAML (desde valores de propiedad de control hasta propiedades públicas que implementan campos de base de datos a través de Entity Framework ). El enlace de datos está representado por la clase Binding , que a su vez se hereda de MarkupExtension , que le permite usar enlaces no solo en el código, sino también en el marcado:
<Orientación de StackPanel = "Horizontal" > <Slider x:Name= "slider" Width= "200" Mínimo= "1" Maximum= "100" Value= "60" /> <TextBox Text= "{Binding ElementName=slider, Ruta=Valor, Modo=Doble Vía, UpdateSourceTrigger=PropiedadCambiada}" /> </StackPanel>Además de la clase de enlace principal, WPF implementa varios otros mecanismos de enlace:
Le permiten crear elementos de estilo y, por regla general, se usan solo en el marcado:
<Button> <Button.Style> <Style TargetType= "Button" > <Setter Property= "FontSize" Value= "20" /> <Setter Property= "Foreground " Value= "LimeGreen" /> </Style> </ Botón.Estilo> </Botón>Si el estilo se establece en recursos (como un diccionario de recursos), el atributo x:Key se puede usar para especificar una clave única. Luego, en el control al que desea aplicar el estilo, debe usar la extensión de marcado StaticResource para enlazar con ese estilo. Si usa esta técnica, los estilos no abarrotarán el marcado.
Te permiten cambiar el diseño gráfico de los elementos y están representados por la clase ControlTemplate . A diferencia de los estilos, puede cambiar no solo la representación gráfica de un elemento, sino también su estructura. En este caso, la plantilla de control se especifica a través de la propiedad Plantilla .
Un ejemplo simple de un botón redondo:
< Contenido del botón = "¡Oye!" Fondo= "LimeGreen" Primer plano= "Blanco" > <Button.Template> <ControlTemplate TargetType= "Button" > <Grid> <Elipse Fill= "{TemplateBinding Background}" Stroke= "{TemplateBinding BorderBrush}" Stretch= "Fill" /> <ContentPresenter VerticalAlignment= "Centro" HorizontalAlignment= "Centro" /> </Grid> </ControlTemplate> </Button.Template> </Button>A diferencia de las plantillas de control, se establecen para un contexto de datos específico (que en los controles de bloque se establece a través de la propiedad DataContext y en los controles de lista a través de ItemsSource ). La plantilla de datos en sí está representada por la clase DataTemplate . La propiedad DataType se utiliza para designar el tipo de datos al que se aplicará la plantilla.
El sistema de recursos te permite combinar plantillas, estilos, pinceles, animaciones y muchos otros elementos interactivos, lo que simplifica enormemente el trabajo con ellos. Los recursos se establecen en la propiedad Resources de la clase FrameworkElement, de la que se heredan todos los controles, paneles de diseño e incluso la clase Application. Esto le permite crear un sistema de recursos en capas:
WPF presenta un conjunto rico, escalable y flexible de capacidades gráficas:
WPF proporciona una biblioteca de formas 2D comunes dibujadas con vectores, como rectángulos y elipses, así como rutas gráficas. Y en su funcionalidad, las formas implementan muchas de las características que están disponibles para los controles convencionales.
Los gráficos 2D en WPF incluyen efectos visuales como degradados, mapas de bits, dibujos, videoarte, rotación, escala y sesgo.
Gráficos 3DWPF también incluye capacidades de representación 3D integradas con gráficos 2D para crear interfaces de usuario más ricas e interesantes.
.RED | |
---|---|
Implementaciones | |
Arquitectura | |
Infraestructura | |
Idiomas de Microsoft | |
Otros idiomas | |
Fundamentos de Windows | |
Componentes | |
comparaciones |
|
Tecnologías futuras | |
Recursos informativos |
Software de Microsoft gratuito y de código abierto | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
información general |
| ||||||||||||
Software _ |
| ||||||||||||
Licencias | |||||||||||||
Temas relacionados |
| ||||||||||||
Categoría |
de elementos GUI | Juegos de herramientas (conjuntos)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
nivel bajo |
| ||||||||||||||||||||||||||
alto nivel |
|