Layout y Presentación de la Información en WPF (Contenedores Primera Parte)

A mi juicio los contenedores en WPF es una cosa que debemos dominar  si queremos diseñar una buena aplicación WPF es la parte principal de un buen diseño.

WPF  por  defecto  solo  admite  la  colocación  de  un  solo  elemento  en  una ventana y esta debe de ser un contenedor, cuando creamos un usercontrol o page o window su hijo debe de ser un contenedor. y en este iremos añadiendo controles

En los contenedores  de WPF  tiene  lugar en dos  estados: Measure  (Medición)  y Arrange (distribución).

Measure

En estado de medición  (Measure) el contenedor comprueba por cada uno de
los  elementos  hijos  su  tamaño  deseado,  es  decir,  les  “pregunta”  que  tamaño
pretende ocupar en el contenedor.

Arrange

En este estado de distribución (Arrange), el contenedor coloca a cada uno de
los elementos hijos en su posición apropiada.

Veremos que entender estos estados son importantes cuando desarrollemos nuestros propios contenedores

 

Clase Panel 

La clase abstracta System.Windows.Controls.Panel es de  la que derivan todos
los  contenedores  de  WPF.  La  clase  Panel  expone  un  pequeño  grupo  de
miembros incluyendo las siguientes propiedades públicas:

Background

Utilizando  el  Brush  dado  pinta  el  fondo  del  panel.  Como  nota  importante
recalcar que debemos asignar un valor no nulo si queremos recibir eventos de
ratón. 
Podemos utilizar como color de fondo el transparente y asi disponemos de los
eventos del ratón.

Children

Importante colección donde se almacenan los elementos alojados en el panel.
Nos  referimos  al  primer  nivel de  elementos  hijos,  por  lo  que  es  posible  que
exitan más subniveles.

IsItemsHost

Esta propiedad  es  verdadera  cuando  el panel  se usa para mostrar  elementos
que  están  asociados  con un  ItemsControl como  los nodos de un ListBox por
ejemplo.

En el siguiente diagrama se muestra la jerarquía de clases de WPF5.jpg

System.Threading.DispatcherObject

Todos los objetos de WPF derivan de DispatcherObject. WPF trabaja  en STA, y el principal objetivo es manejar la concurrencia y threading. Cuando cualquier mensaje como por ejemplo un click del ratón son enviados al DispatcherObject  que verifica si el código se está ejecutando en el thread correcto

System.Windows.DependencyObject

La clase base para todos los objetos que tienen las propiedades de dependencia, las dependency properties únicamente se usar para definir las propiedades de los controles de interfaz de usuario y de los objetos de negocio que interactúan con la UI

System.Windows.Media.Visual

Esta clase se encarga del renderizado de la UI, del clipping, calculo del recuadro de dibujado, transformaciones y coordenadas. Es una clase muy importante en WPF, ya que cualquier clase que se tenga que renderizar debe heredar de ella.

System.Windows.UIElement

Maneja tres elementos importantes el layaout, los eventos y el input (eventos de teclado y ratón)

System.Windows.FrameworkElement

Es una clase fundamental dentro de WPF , implementa miembros de la clase UIElement y define los estados de Measure y Arrange, ademas se encarga del enlace a datos, estilos, animaciones, define los eventos del cliclo de vida del objeto.

 

 

 

 

 

 

 

 

Por debajo de Panel están los contenedores que viene por defecto en WPF que iremos viendo en siguiente posts

  • Canvas
  • Grid
  • StackPanel
  • WrapPanel
  • DockPanel
  • ViewBox

Además de los que viene por defecto dentro de WPF nosotros podremos crear nuestros propios contenedores con su compartimiento, veremos algún ejemplo de ello

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *