Me 2
Me 2
Me 2
ESCRITORIO
UNIDAD Nº I
Desarrollo de Aplicaciones con WPF
1 www.iplacex.cl
SEMANA 2
Consideraciones previas
2 www.iplacex.cl
Introducción
El desarrollo de aplicaciones es un proceso largo. Se debe considerar cuales son las
necesidades que debe cubrir un usuario y cual o cuales son los caminos más aptos para
el desarrollo de esta solución, considerando una diversidad de factores, como el nivel de
conocimiento de los usuarios finales, sistemas en donde se ejecutará y configuraciones
de compatibilidad que se deban tomar en cuenta.
Existe una diversidad de herramientas que permiten desarrollar esta importante pero no
menos compleja parte del software. En el caso de las aplicaciones de escritorio en
Windows es posible escoger entre tres distintos frameworks: WinForms, WPF y UWP,
aunque, como recordarás, esta asignatura se centra específicamente en WPF (Windows
Presentation Foundation).
Durante esta semana, aprenderás que son los controles, cuáles son los más utilizados,
las propiedades más importantes presentes en estos elementos y quizás el evento más
utilizado en desarrollo, el evento Click, el que desencadena acciones al presionar un
botón.
3 www.iplacex.cl
Ideas fuerza
Evento: es un suceso que ocurre cuando el usuario ejecuta una acción sobre algún control
de la interfaz, por ejemplo, presionar un botón.
GUI: es la representación gráfica de las acciones que puede realizar el usuario para
administrar los datos de una aplicación.
4 www.iplacex.cl
Índice
1. UI en aplicaciones......................................................................................................... 6
1.1 WPF. Windows Presentation Foundation ............................................................ 7
1.2 XAML ................................................................................................................... 9
1.3 Estructura básica de proyecto WPF ................................................................... 11
1.4 Ventana: interfaz y clase ..................................................................................... 12
1.5 Controles en WPF ................................................................................................ 15
2. Arquitectura a utilizar: MVC ...................................................................................... 25
5 www.iplacex.cl
Desarrollo
1. UI en aplicaciones
Todos somos usuarios y todos utilizamos distintos tipos de aplicaciones en nuestro diario
vivir. Estas, desde ya hace varios años nos han ido facilitando la realización de tareas
complejas, transformando estas actividades a veces tediosas en acciones simples e
intuitivas para los consumidores de aplicaciones.
Bajo estos parámetros, en donde a algunos se les dificulta y a otros se les facilita realizar
acciones en aplicaciones, las interfaces de usuario juegan un rol fundamental en estas sin
importar del tipo que sean o dispositivo en el cual están siendo ejecutadas.
6 www.iplacex.cl
Existen técnicas para la construcción de estas que se basan en aspectos psicológicos
como UX, en donde el diseño se centra, a grandes rasgos, en que tan cómodo se pueda
llegar a sentir el usuario al utilizar una app.
7 www.iplacex.cl
Estructura básica de esquema XAML
Veamos en más profundidad que es XAML y como trabaja dentro de las aplicaciones WPF.
8 www.iplacex.cl
1.2 XAML
También, es posible especificar comportamientos para estos controles. Estas acciones las
conoceremos como eventos y permitirán agregar distintas funcionalidades a estos
controles, como por ejemplo drag-and-drop, que hacer cuando se hace click en el botón,
entre otros.
Los controles WPF son clases. Poseen propiedades, métodos y eventos, capaces de
añadir customización y funcionalidad a los mismos.
9 www.iplacex.cl
Más adelante en este material, encontrarás los controles, propiedades y eventos más
importantes.
10 www.iplacex.cl
1.3 Estructura básica de proyecto WPF
Este proyecto WPF (el cual será el que estarás viendo en la asignatura), posee la siguiente
estructura:
WPF también trabaja por medio de ventanas y un proyecto de este tipo puede tener una
o múltiples ventanas, y sin importar cual sea el objetivo de cada una, todas comparten
12 www.iplacex.cl
algo en común: poseen dos archivos, uno orientado a contener la interfaz de usuario o
frontend en donde los desarrolladores posicionaremos los controles de interacción
disponibles para el usuario (botones, campos de texto, etiquetas, menús, etc), y otro
archivo que contendrá la clase asociada a esta ventana y que actuará como backend para
entregar funcionalidad a estos controles.
Antes de poder crear una ventana, es necesario comprender como se estructuran a nivel
de código tanto la interfaz como la clase de la ventana. Para esto, tomaremos como
ejemplo la ventana principal que es creada por defecto en un proyecto de escritorio WPF:
MainWindow.
MainWindow.xaml
13 www.iplacex.cl
Si hacemos el ejercicio de similitud a HTML, <Window></Window> vendría a ser la
etiqueta <html></html>, y <Grid></Grid> la etiqueta <body></body>.
MainWindow.xaml.cs
14 www.iplacex.cl
Al momento de agregar una ventana dentro del proyecto, automáticamente se crearán
tanto el archivo para la interfaz de usuario como para entregar funcionalidad a esta
interfaz. La forma de agregar una nueva ventana será vista en el material procedimental
de la semana, junto con otros procedimientos, como agregar controles, modificar algunas
de sus propiedades y crear menús con opciones.
El SDK (Software Development Kit) de WPF utiliza el termino control para referirse a toda
clase que pueda ser representada como una instancia de objeto visible dentro de la
interfaz de una aplicación. Estos controles pueden ser campos de texto, botones, canvas,
grilla de datos, calendarios, etc.
Estos elementos pueden ser creados a nivel de código utilizando la clase de la ventana
instanciando sus objetos, ser creados manualmente dentro del editor XAML o arrastrando
desde el toolbox hasta el editor de diseño.
15 www.iplacex.cl
CheckBox <CheckBox /> representa opciones que el usuario puede
seleccionar. Es posible crear uno o muchos, elegir
más de uno y pueden ser agrupados
ComboBox <ComboBox /> despliega una lista de opciones a merced del
usuario. Por defecto se encuentra colapsada
DataGrid <DataGrid /> permite desplegar y editar información desde
distintas fuentes, como bases de datos o listas. Es
posible crear 4 tipos de columnas:
DataGridTextColumn (string),
DataGridCheckBoxColumn (boolean),
DataGridComboBoxColumn (enum) y
DataGridHyperlinkColumn (uri)
DatePicker <DatePicker /> permite seleccionar o ingresar de forma manual una
fecha
Image <Image /> despliega imágenes cargadas estática o
dinámicamente
Label <Label /> muestra texto plano en la interfaz, aunque también
es posible que pueda contener elementos de tipo
UIElement
ListBox <ListBox /> provee al usuario de una lista de opciones
desplegables
Menu <Menu /> permite organizar elementos asociados entre sí. Se
pueden asociar comandos (combinaciones de
teclas) y controladores de eventos. Posee
cabeceras de menú e ítems.
MenuItem <MenuItem /> corresponde a los ítems desplegados desde la
cabecera de un menú, cada uno realizando una
acción distinta. Aplica evento Click como los
botones.
RadioButton <RadioButton /> permite elegir solo una opción entre muchas. Se
pueden agrupar
16 www.iplacex.cl
TextBlock <TextBlock /> permite introducir textos relativamente largos, por
ejemplo, la descripción de un producto
TextBox <TextBox /> permite introducir textos relativamente cortos, por
ejemplo, el nombre de una persona
Todos estos controles además poseen propiedades y eventos. Las propiedades siendo
las caracteristicas (nombre, tamaño, color, etc) y los eventos los comportamientos que
estos posean. Todos los eventos son especificados en la estructura xaml de los controles,
mientras que solo algunas propiedades son mostradas dentro de estas etiquetas.
Las propiedades que serán más utilizados en esta asignatura serán los siguientes:
- Name: es el nombre que tendrá el control, debe ser único y permitirá que pueda ser
invocado desde el código. Afecta a todos los controles. Para identificarlos dentro del
código, el nombre estará compuesto de una abreviatura del tipo de control, seguido de la
acción o a que corresponde el control.
- Content: es el texto que mostrará el control por pantalla al usuario. Afecta a controles
como Label y Button.
17 www.iplacex.cl
- GroupName: permite agrupar controles dentro de una misma categoría. Afecta a los
controles CheckBox y RadioButton.
- Text: permite principalmente obtener el valor que el usuario ingresa en campos de texto
como TextBox y TextBlock. Adicionalmente, permite cargar datos dinámicamente desde
el código de la ventana, para, por ejemplo, cargar datos de un usuario al cual se le
actualizarán los datos. Por lo general, esta propiedad no será especificada dentro del
código xaml del control.
18 www.iplacex.cl
- SelectedDate: permite seleccionar o asignar la fecha a un control de tipo Calendar y
DatePicker.
- IsEnabled: establece que un control no está disponible para su uso dentro de la interfaz.
Este tipo de configuración puede ser usado para activar controles bajo una cierta
condición. Esta propiedad está disponible para todos los controles.
19 www.iplacex.cl
- Items e ItemSource: permiten especificar desde un tipo IEnumerable (matrices, clases
enum), que datos se listarán en el control. Items es aplicable a ListBox y ComboBox,
mientras que ItemSource está disponible para ListBox, ComboBox y DataGrid. Es
recomendable especificar listado desde el código y no desde la interfaz, para que pueda
ser cargado de forma dinámica.
20 www.iplacex.cl
- SelectedIndex, SelectedItem y SelectedValue: Permiten obtener el índice, el nombre con
que es desplegado (también el valor completo de una fila) y el valor asociado
respectivamente, de las opciones listadas en controles de tipo ComboBox y ListBox. Por
otro lado, es posible también aplicarlos dentro de controles DataGrid, aunque con un poco
más de trabajo, ya que la fila seleccionada deberá ser “casteada” a la clase o tipo de dato
que corresponda. Esto se debe a que la grilla de datos acepta estructuras de datos más
complejas.
21 www.iplacex.cl
Por el lado de los eventos de los controles, quizás el evento que más se implementa dentro
de una aplicación es el evento Click. Este permitirá ejecutar código de forma instantánea
al cliquear un botón. Veamos el siguiente ejemplo, en donde al presionar el botón se
deberá mostrar un mensaje de bienvenida.
En la interfaz se creará una nueva instancia del control Button, que tendrá el nombre
btnSaludo y ejecutará el evento Click mostrando un mensaje cuando sea presionado por
el usuario. El botón lucirá de la siguiente manera una vez ejecutado el programa:
22 www.iplacex.cl
Esa interacción del usuario (cliquear el botón) ejecutará el evento Click y todas las
instrucciones que fueron definidas dentro de este. Para este ejemplo, solo se procedió a
mostrar un MessageBox con el texto del saludo.
El evento Click también puede ser especificado para las opciones y elemento que posee
un menú de opciones.
23 www.iplacex.cl
ANTES DE CONTINUAR CON LA LECTURA…REFLEXIONEMOS
24 www.iplacex.cl
2. Arquitectura a utilizar: MVC
Por lo general, todas estas buscan separar en distintos niveles cada uno de los roles de
la aplicación: el modelo (conexión a base de datos, clases y entidades), el o los
controladores (clases de administración) y las vistas (interfaces), es decir, separar el
software en capas para facilitar su desarrollo y mantenibilidad.
25 www.iplacex.cl
ANTES DE CONTINUAR CON LA LECTURA…REFLEXIONEMOS
26 www.iplacex.cl
Conclusión
La aplicación que estas utilizando para leer este documento posee una interfaz de usuario.
Contiene textos, opciones y botones que son capaces de facilitar ciertas tareas en el
proceso de lectura, como el zoom, destacar texto e incluso dar la posibilidad de editar el
mismo. Estos y otros elementos componen la interfaz de usuario de aplicación.
Para realizar la construcción de estas vistas con las que el usuario interactuará en su
mayoría son construidas y diseñadas por medio de la implementación de frameworks de
frontend, como Angular, WPF o Xamarin. En este caso, el framework utilizado en esta
asignatura es WPF, el que permite desarrollar aplicaciones de escritorio para Windows.
Esta herramienta implementa XAML para dar vida a la interfaz de usuario y C# para dar
comportamientos a cada uno de estos elementos que podremos disponer en la interfaz de
usuario como botones, grillas de datos y listas desplegables, en donde cada uno de estos
controles tiene sus propios métodos, propiedades y eventos.
Ha estos proyectos también es posible aplicarles una cierta estructura general, llamada
arquitectura o patrón arquitectónico, el que define como será construido y permitirá
separar los distintos roles de la aplicación.
27 www.iplacex.cl
Bibliografía
Controls
https://docs.microsoft.com/en-
us/dotnet/desktop/wpf/controls/?view=netframeworkdesktop-4.8
MVC
https://developer.mozilla.org/es/docs/Glossary/MVC
MVVM
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-
patterns/mvvm
28 www.iplacex.cl
29 www.iplacex.cl