TOC

This article has been localized into Spanish by the community.

Una aplicación WPF:

La Ventana

Cuando se crea una aplicación en WPF, el primer elemento con el que te encontrarás es con la clase Window. Esta sirve como raíz de la ventana y te provee algunos elementos estandar como un borde, una barra de títulos, y los botones de control de ventana. Una ventana de WPF es una combinación de un archivo XAML (.xaml), donde el elemento <Window> es la raíz, y este contiene un archivo CodeBehind(.cs). Si estás utilizando Visual Studio (Express) y creas una nueva aplicación WPF, el IDE generará una ventana por defecto que se verá de la siguiente forma:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>

    </Grid>
</Window>

El atributo x:class le dice al XAML que clase utilizar, en este caso Window1, que Visual Studio ha creado para nosotros. Podrás encontrarlo en el árbol de proyectos en VS, como un nodo hijo del archivo XAML. Por defecto, se ve algo parecido a esto:

using System;
using System.Windows;
using System.Windows.Controls;
//…more using statements

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
    }
}

Como puedes ver, la clase Window1 esta definida como parcial, porque se combina con tu archivo XAML al momento de ejecución para darte una ventana completa. Esto es lo que realiza InitializeComponent(), por lo cual es requerido para obtener un funcionamiento y ejecución de la ventana.

Si miramos el archivo XAML, notarás un par de atributos interesantes en los elementos de la ventana, como Titulo, que define el titulo de la ventana (mostrado en la barra de titulo) asi tambien el ancho y alto inicial. Hay también un par de definiciones de namespace, que se discutirán mas adelante en los capítulos de XAML.

También notarás que Visual Studio ha creado un control Grid adentro de la ventana. El control Grid es parte de los paneles de WPF, y mientras pudo ser cualquier panel o control, la Ventana solo puede tener UN control hijo, asi que un panel, que en cambio puede tener múltiples controles hijos es una buena decisión. Mas adelante en este tutorial daremos un vistazo mas de cerca a los diferentes tipos de paneles que puedes utilizar y su importancia en WPF.

Propiedades importantes de Window

La Clase Window de WPF tiene un montón de atributos interesantes que puedes configurar para controlar la apariencia y comportamiento de tu ventana de aplicación. Acá hay una lista de los más interesantes:

Icon - Permite definir el ícono de la ventana, que generalmente se muestra en la esquina superior izquierda, justo antes del título de la ventana.

ResizeMode - Esto controla si el usuario final puede redimensionar la ventana o no. Por defecto es CanResize, que permite al usuario redimensionar la ventana como cualquier otra, ya sea usando los botones de maximizar/minimizar o arrastrando alguno de sus bordes. CanMinimize permitirá al usuario minimizar la ventana, pero no maximizarla o arrastrala para que se agrande o achique. NoResize es el más estricto, los botones de maximizar y minimizar no aparecen y la ventana no puede cambiar su tamaño arrastrándola.

ShowInTaskbar - Por defecto es verdadero, pero si lo configuras falso, tu ventana no aparecerá en la barra de tareas de Windows. Es útil para ventanas secundarias, o aplicaciones que deben minimizarse en la bandeja.

SizeToContent - Decide si la ventana debe redimensionarse por si misma para automáticamente ajustarse a su contenido. Por defecto es Manual, lo que significa que la ventana no se redimensiona automáticamente. Otras opciones son: Width (Ancho), Height (Alto) y WidthAndHeight (Ancho y Alto), cada una de estas podrá ajustar automáticamente el tamaño de la ventana horizontal, vertical o ambos.

Topmost - Por defecto es falso, pero si se lo pone verdadero, tu ventana permanecerá por encima de otras ventanas a menos que esté minimizada. Sólo útil para ocasiones especiales.

WindowStartupLocation - Controla la posición inicial de su ventana. Por defecto es Manual, lo que significa que la ventana inicialmente se posicionará de acuerdo sus propiedades Top y Left. Otras opciones son CenterOwner, la cual posicionará a la ventana en el centro de la ventana que la contenga, y CenterScreen, la cual posicionará a la ventana en el centro de la pantalla.

WindowState - Controla el estado inicial de la ventana. Puede ser Normal, Maximized (maximizada) o Minimized (minimizada). Por defecto es Normal, que es lo que deberías usar, a menos que quieras que tu ventana comience maximizada o minimizada.

Hay además muchos otros atributos, dales una mirada por tu cuenta y luego continúa en el siguiente capítulo.