TOC

This article is currently in the process of being translated into Spanish (~99% done).

Una aplicación WPF:

Working with App.xaml

App.xaml es el punto declarativo inicial de una aplicación. Visual Studio automáticamente crea este archivo cuando se crea una nueva aplicación WPF, incluyendo un archivo Code-behind llamado App.xaml.cs. Estas clases trabajan similarmente a la de una Ventana, donde hay dos archivos que son clases parciales, trabajando en conjunto para permitir tanto texto de marcado(XAML) y Code-behind.

App.xaml.cs extiende la clase Application, la cual es una clase central en una aplicación de WPF de Windows. .NET también busca esta clase para obtener sus instrucciones iniciales para luego iniciar la ventana o página deseada desde esta. Este también es el lugar para subscribir eventos importantes de aplicación tales como, inicio de aplicación, excepciones sin manejar y otras. Más acerca de este tema en otras secciones.

Una de las características utilizadas con mayor frecuencia de un archivo App.xaml es la definición de recursos globales que pueden ser utilizadas en toda la aplicación, por ejemplo estilos globales. Esto sera explicado a profundidad mas adelante.

Estructura App.xaml

Una vez creada una nueva aplicación, el código generado automáticamente para App.xaml debe verse de la siguiente manera:

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>

Lo principal a notar en esta parte es la propiedad StartupUri. Esta es la parte que indica que Ventana o Página utilizar una vez sea iniciada la aplicación. En este caso, MainWindow.xaml sera iniciada, pero si queremos utilizar otra ventana solo hay que cambiar esta propiedad.

En algunas situaciones, vas a necesitar un mayor control sobre cómo y cuándo la ventana inicial es mostrada. En este caso, puedes remover la propiedad StartupUri y su valor, y luego realizar todo desde el Code-behind. Esto es demostrado en el código siguiente.

Estructura App.xaml.cs

El archivo App.xaml.cs de un nuevo proyecto por lo general debe verse de la siguiente manera:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

	}
}

Ahora verás como esta clase extiende la clase Application, permitiéndonos realizar actividades a nivel de aplicación. Por ejemplo, puedes realizar acciones en el evento Startup, donde manualmente se puede crear la ventana inicial.

Un ejemplo de esto:

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
			 Startup="Application_Startup">
    <Application.Resources></Application.Resources>
</Application>

Observa como StartupUri ha sido reemplazado con una suscripción al evento Startup (la suscripción a eventos a través de XAML es explicado en otro capítulo). En Code-Behind puedes usar eventos de la siguiente manera:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

		private void Application_Startup(object sender, StartupEventArgs e)
		{
			// Create the startup window
			MainWindow wnd = new MainWindow();
			// Do stuff here, e.g. to the window
			wnd.Title = "Something else";
			// Show the window
			wnd.Show();
		}
	}
}

Lo interesante de este ejemplo, en comparación a utilizar la propiedad StartupUri, es que podemos manipular la ventana inicial antes de mostrarla. En este ejemplo, cambiamos el título de la misma, lo cual no es muy útil, pero podemos suscribir eventos o mostrar una pantalla de inicio. Cuando tienes este nivel de control hay muchas posibilidades. Veremos más a fondo estas posibilidades en los siguientes artículos de este tutorial.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!