Cada aplicação em WPF consiste de uma instância da classe System.Windows.Application.
Isto signifca que é por meio desta classe que são controladas as janelas e o comportamento geral do programa.
O Visual Studio gera automaticamente o código abaixo para o início da aplicação.
using System;
using System.Windows;
public class Startup
{
[STAThread()]
static void Main()
{
//Cria a aplicação
Application app = new Application();
//Cria a janela principal
Window1 win = new Window1();
//Executa a aplicação e mostra a janela principal
app.Run(win);
}
}
Comportamento da aplicação – Controlando como a mesma é finalizada
Em WPF é possível alterar vários aspectos da aplicação, um que merece destaque é a maneira como a mesma pode ser encerrada. Por padrão a aplicação permanece ativa até o momento que a última janela é finalizada, mas, isto pode ser modificado. Se você fizer um ajuste na propriedade ShudtownMode da classe Application antes de chamar o método Run(). Existem três opções:
Valor | Comportamento |
OnLastWindowClose | Encerra a aplicação assim que a última janela for fechada. Este é o comportamento definido por padrão. |
OnMainWindowClose | Neste padrão – que é o mais tradicional dentro do Windows – a aplicação permanece ativa somente até a janela que for definida como principal seja fechada, independente de outras estarem abertas. |
OnExplicitShutdown | Mantém a aplicação ativa mesmo que todas as janelas permaneçam abertas. O seu uso faz sentido em cenários onde um programa precise ficar ativo em segundo plano. |
Para alterar o comportamento coloque o seguinte código antes do método Run:
app.ShutdownMode = ShutdownMode.<valor desejado para o shutdown>;
Importante
Se você definir para ShutdownMode o valor OnExplicitShutdown deve prover para a interface do programa, meios para que o mesmo possa ser encerrado pelo usuário já que existe a possibilidade de todas as janelas estarem fechadas. Uma forma de fazer isto é criando um ícone na bandeja do sistema com um menu de contexto.