¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. C# 8 y Visual Studio 2019
  3. Desarrollo de aplicaciones Windows
Extrait - C# 8 y Visual Studio 2019 Los fundamentos del lenguaje
Extractos del libro
C# 8 y Visual Studio 2019 Los fundamentos del lenguaje
1 opinión
Volver a la página de compra del libro

Desarrollo de aplicaciones Windows

Presentación de WPF

Las aplicaciones Windows son aplicaciones de ventanas que presentan datos de una forma más gráfica y agradable que la ventana de línea de comandos. Para desarrollar este tipo de aplicaciones, .NET proporciona desde sus inicios la tecnología Windows Forms. La versión 3.0 del framework .NET, aparecida en 2006, llegó con una nueva tecnología de presentación: WPF (Windows Presentation Foundation). Aporta algunas mejoras notables tanto a nivel técnico como en lo relativo al desarrollo:

  • La definición de la interfaz se realiza mediante el lenguaje de etiquetas XAML (eXtensible Application Markup Language) y no mediante código C#.

  • Se desacopla la interfaz gráfica del código de negocio fácilmente gracias a la noción de binding.

  • La visualización ya no se basa en el componente de software GDI sino en DirectX, lo que implica que algunos cálculos puede realizarlos la GPU.

  • Todos los componentes de WPF utilizan el diseño vectorial.

  • En un componente, el aspecto gráfico y el aspecto funcional están muy poco ligados, lo que permite modificar la parte gráfica de los componentes sin afectar a su comportamiento.

A pesar de lo robusta que es, la tecnología Windows Forms se deja a un lado con frecuencia en beneficio de WPF. Los motivos principales de esta elección están ligados por un lado a la experiencia del usuario, dado que WPF permite crear de manera sencilla aplicaciones fluidas con un aspecto moderno, y por otro lado a motivos técnicos, pues las posibilidades de desacoplo que ofrece WPF mejoran las pruebas y la mantenibilidad de las aplicaciones.

Microsoft trabaja, actualmente, sobre WPF y sobre tecnologías que utilizan XAML. Un equipo de desarrolladores del gigante de software ha comentado, durante la conferencia BUILD 2014 que la tecnología Windows Forms se encuentra, actualmente, en periodo de mantenimiento, lo que significa que ya no aparecerán actualizaciones funcionales, si bien los problemas detectados sí se irán corrigiendo.

Sin embargo, esta última declaración no impidió que Microsoft migrara Windows Forms junto con WPF a .NET Core 3.0. Se puede suponer que, a pesar de la pérdida relativa de velocidad de Windows Forms, esta tecnología todavía se usa ampliamente...

Uso de controles

La sección anterior nos ha mostrado, brevemente, la estructura de una aplicación WPF. Habrá podido observar que la interfaz gráfica está compuesta por controles definidos en el código XAML o, con menor frecuencia, en C#.

Estos controles forman parte de una jerarquía que permite tener propiedades comunes, la mayor parte del tiempo ligadas a su posicionamiento. Cada control hereda, de este modo, de un control padre al que se le agregan funcionalidades de cara a proveer un nuevo conjunto formado por un elemento visual y un comportamiento funcional asociado.

Visual Studio integra, de manera nativa, un diseñador visual que permite manipular controles de manera gráfica, y por tanto más simple. Genera, también, código XAML que define la interfaz. A diferencia del diseñador visual de Windows Forms, el diseñador de WPF crea código XAML que es posible manipular directamente, donde cualquier modificación sobre el código tiene su reflejo en la parte de diseño gráfico, y a la inversa.

1. Agregar controles

Tras la creación de un nuevo proyecto de aplicación WPF, Visual Studio muestra, por defecto, varios elementos:

  • El Explorador de soluciones,

  • La ventana Propiedades,

  • Una ventana de edición dividida en dos secciones: el diseñador visual en la zona superior, y el editor de código XAML situado en la zona inferior.

images/Capitulo7_pag14.png

La ventana de edición está destinada a la modificación de la ventana principal de la aplicación, llamada MainWindow. El diseñador visual presenta una vista de esta ventana, que no tiene de momento ningún contenido.

Varias ventanas, ocultas automáticamente, se posicionan en la zona izquierda del entorno. En el contexto de la creación o modificación de una interfaz gráfica, la más importante es la ventana Cuadro de herramientas.

images/CAP07IMG02.png

Esta ventana enumera distintos controles que pueden utilizarse en una interfaz WPF. Permite, también, seleccionarlos y situarlos con ayuda del ratón. Este enfoque resulta mucho más rápido que la edición del código fuente XAML.

Es posible utilizar tres soluciones para situar controles en una ventana WPF:

  • Haciendo doble clic sobre un control en el cuadro de herramientas se sitúa un ejemplar del control...

Los principales controles

El framework .NET provee, de manera estándar, numerosos controles WPF que cubren la mayoría de necesidades relativas a la creación de una interfaz gráfica moderna. Están definidos en la librería PresentationFramework.dll, en el espacio de nombres System.Windows.Controls.

La mayoría de estos controles poseen un juego de propiedades comunes que permiten gestionar su representación visual en la aplicación, así como su aspecto. A continuación se enumeran los principales:

Height y Width

Definen la altura y anchura del control.

HorizontalAlignment y VerticalAlignment

Definen cómo debe situarse el control en el espacio que tiene disponible horizontal y verticalmente. Los valores pueden ser Left (alineación a la izquierda), Center (centrado), Right (alineación a la derecha) y Stretch (ocupar todo el espacio disponible) para la alineación horizontal, y Top (alineación arriba), Bottom (alineación abajo), Center y Stretch para la alineación vertical.

Margin

Define el espacio que debe quedar libre alrededor de los límites del control.

Padding

Define el espacio que debe quedar libre entre el borde del control y su contenido.

BorderBrush

Define el color del borde del control.

BorderThickness

Define el grosor del borde del control.

Visibility

Define el estado de visibilidad del control. Existen tres valores disponibles: Visible, Hidden (el control se oculta pero la zona que debería ocupar está disponible), Collapsed (el control se oculta y la zona que debería ocupar se libera).

Los controles WPF pueden agruparse en varias categorías definidas en función de su objetivo.

1. Controles de ventanas

Los controles de ventanas son esenciales en una aplicación WPF. Son ellos los que contienen la interfaz gráfica que va a crear.

Existen dos controles estándar que pertenecen a esta categoría y se corresponden con modos de navegación distintos.

a. Window

El control Window permite, como su propio nombre indica, definir una ventana de aplicación. Este control de ventanas es el que se utiliza con mayor frecuencia.

Puede crearse mediante el cuadro de diálogo Agregar nuevo elemento (haciendo clic con el botón derecho sobre el proyecto y seleccionando, a continuación, Agregar - Nuevo elemento o mediante el atajo de teclado [Ctrl][Mayús]...

Interacciones de teclado y de ratón

En un entorno gráfico como el que proporcionan las aplicaciones WPF es esencial ser capaz de reaccionar a las interacciones entre el usuario y la aplicación para proveer una experiencia fluida y coherente. En la actualidad, estas interacciones se realizan casi por completo con la ayuda de dos dispositivos: el teclado y el ratón. WPF proporciona distintos eventos que se producen cuando el usuario realiza alguna acción sobre uno de estos dispositivos. Estos eventos se generan mediante el tipo System.Windows.UIElement, que es un ancestro común a casi la totalidad de los controles WPF.

1. Eventos de teclado

Con WPF existen dos eventos principales producidos cuando el usuario presiona una tecla de su teclado: KeyDown y KeyUp. Se corresponden, respectivamente, con la pulsación de una tecla y con la liberación de la misma y se producen en este orden.

El delegado asociado a ambos posee la siguiente definición:

public delegate void KeyEventHandler(object sender, KeyEventArgs e); 

Los datos que se transmiten en el parámetro de tipo KeyEventArgs permiten conocer la tecla física del teclado relacionada con el evento producido, así como su estado. El siguiente ejemplo de código muestra en la ventana Salida de Visual Studio el nombre de la tecla manipulada así como su estado mediante las propiedades IsUp, IsDown y KeyStates del objeto KeyEventArgs.

public partial class MainWindow : Window  
{  
   public MainWindow()  
   {  
       InitializeComponent();  
  
       KeyDown += Window_ManipulacionTeclaTeclado;  
   }  
  
   private void Window_ManipulacionTeclaTeclado(object sender, 
KeyEventArgs e) 
   {  
       Console.WriteLine("{0} \t IsUp = {1} \t IsDown = {2} \t 
KeyStates = {3}", e.Key, e.IsUp, e.IsDown, e.KeyStates); 
   } 
} 

De este modo, cuando la ventana de la aplicación está activa, el hecho de escribir Hola! muestra el siguiente resultado en la ventana Resultados.

images/ch7fig47.png

La tecla LeftShift se utiliza para escribir la primera letra en mayúscula. La tecla D1, que se encuentra en la última...

Ir más allá con WPF

WPF es una tecnología cuya estructura permite llevar muy lejos la personalización de una interfaz gráfica. Visual Studio cuenta con muchas herramientas, entre ellas Blend, que resultan de gran ayuda para la elaboración de interfaces gráficas.

WPF permite de este modo, gracias a los bindings en particular, un desacople casi perfecto entre la parte visual de una aplicación y el código asociado a ella. La implementación de esta separación se realiza, a menudo, mediante el patrón de diseño MVVM (Model - View - ViewModel).

1. Introducción al uso de Blend

Blend para Visual Studio es una herramienta que aparece, inicialmente, bajo el nombre de Expression Blend en la suite Expression de Microsoft en 2007. Tras sus inicios, se destina a producir código XAML para aplicaciones WPF y su radio de acción se amplia para incluir Silverlight y Windows Phone 7. Tras la versión 4, se ha introducido en la gama de herramientas proporcionadas con Visual Studio, y el conjunto de tecnologías que soporta ha evolucionado incluyendo aplicaciones Windows PhoneyWindows 8/8.1, y posteriormente las aplicaciones universales para las plataformas Windows 10 (PC y smartphones).

Blend puede describirse como una versión orientada al diseño de Visual Studio. En efecto, Visual Studio posee un diseñador visual básico y decenas de herramientas destinadas a guiar al desarrollador en su tarea de escribir código. Blend, por su parte, está formado por un editor de código así como un diseñador visual complementado por numerosas herramientas gráficas. La brecha entre Visual Studio y Blend aumenta con la aparición de cada nueva versión, la última incluye el soporte de IntelliSense y una interfaz muy cercana a la de Visual Studio, lo cual favorece una curva de aprendizaje muy rápida.

Blend se instala como un componente de las cargas de trabajo “Desarrollo .NET” o “Desarrollo para la plataforma Windows universal”.

a. La interfaz

La interfaz general de Blend 2019 es idéntica a la interfaz de Visual Studio, con la única diferencia de que el tema por defecto para esta herramienta es específico de Blend y es sobre todo negro para poder visualizar mejor la interfaz gráfica durante su edición.

images/Capitulo7_pag98.png

La opción...