WPF–Controlando a aplicação

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.