HOW TO: Trabajando con paneles en WPF
Después de ver algún que otro recurso por ahí y trastear con Blend me he decidido a escribir aunque sea un poquito. Cuando ya llevas un tiempo haciendo algo (yo llevo poquito con WPF), lo das por hecho y crees que lo que tú sabes ya lo sabe todo el mundo. Así es que voy a empezar con algo que me surguió a la hora de maquetar mi proyecto.
Cuando comienzo un proyecto, y entro en el diseño de la interfaz, me gusta hacer un dibujo con el diseño de mi interfaz (si no me lo dieron ya). Al igual que la interfaz de un diseño web maqueto mi interfaz y voy añadiendo los controles una vez terminada. En una web se puede utilizar entre otras y por poner un ejemplo una tabla o una capa. Para la interfaz de escritorio se suelen utilizar un panel para ello.
En WPF existen diferentes paneles para diseñar nuestra interfaz. Cada uno tiene unas propiedades características, y puede ser importante conocerlos antes de emplear uno u otro. Eso sí, todos sirve para lo mismo y es contener controles. Si lo queréis usar de rectángulo ya existe un control rectangle para ello. A estos los podréis encontrar por layout. Cuando utilizamos estos controles debemos de tener en cuenta como se mueven estos al redimensionar nuestro formulario. Estos se comportan de manera diferente para cada caso:
Grid.- En un grid, cuando redimensionamos los controles estos se quedan fijos en la posición donde los dejamos moviéndose estos si los el formulario cambia de posición.
WrapPanel. Alinea de forma automática todos los controles según vayan introduciéndose de izquierda a derecha, cuando un elemento no cabe en pantalla este se va hacia abajo creando otra serie de elementos alineados si siguiésemos metiendo objetos. Es curioso este panel la forma que tiene de alinear los objetos.
DockPanel. Este panel también esta molón. Su manera de funcionar es la de colocar los controles en los filos de los bordes. Incluso si pasas algún control por el medio de ese panel , te sale unas flechitas indicándote los cuatro bordes del panel. Este lo podríamos combinar con un par de grid y hacer una cabecera con una columna por poner un ejemplo. Estos controles que agreguemos al panel se moverán pegados a los bordes cuando redimensionemos nuestro formulario.
StackPanel. Si el anterior panel alineaba los controles a los bordes, este también lo hace de una manera curiosa. Alinea los controles verticalmente (por defecto) u horizontalmente. De arriba hacia abajor para el modo horizontal y de izquierda a derecha para el modo vertical.
Canvas. Este panel no hace nada, simplemente coloca tus controles y redimensiona como quieras, que este no hace nada en ellos. Los controles al redimensionar el formulario siempre se quedan en su misma posición.
UniformGrid. El nombre de este panel nos da al leer una pista de lo que hace. Una vez colocados los controles este nos lo va poniendo de forma “uniforme” de izquierda a derecha y de arriba abajo. Da igual como los coloques sobre el panel, el te los coloca en de esa forma. Si pulsamos la tecla alt mientras arrastramos un control este panel al acercarnos a una posición donde poder colocar nuestro control nos muestra una línea para que lo hagamos. Incluso si el lugar ya está ocupado por un control este se desplaza al siguiente lugar para dejar el que nosotros estemos arrastrando en ese momento.
Nota: Si en cualquier momento dejamos pulsada la tecla mayús al crear un objeto, este se restringue de forma proporcionalmente.
Espero que sea de utilidad, seguiré investigando y añadiendo lo que me vaya encontrando por ahí. Podéis añadir lo que queráis.
Un Saludo