Skip to content

Forum

Please or Register to create posts and topics.

WPF: Dov'è il Main

Ho l'Onere e l'onore di fare la prima domanda sul nuovo forum, me la cavo come programmatore dilettante e Sabrina mi ha chiesto di partecipare a questa nuova iniziativa, iniziando ad avviare il forum facendo alcune delle domande che da principiante mi hanno bloccato più di una volta.

Ecco la prima:

In Windows Forms le azioni di startup di un applicazione si inserivano nel Main, in una applicazione WPF sembra che il Main non ci sia più. Dove lo trovo?

R.F.

E a me tocca la risposta alla prima domanda, ringraziando per l'apertura.

Il Main nei template standard delle applicazioni WPF c'è ma non si vede perché viene generato e gestito dalla porzione XAML della classe App.xaml. Se dopo aver compilato una applicazione generata con il template standard WPF attivate il pulsante Show All Files nel solution explorer di Visual Studio, vedrete apparire la cartella "bin" e la cartella "obj" se aprite la cartella obj\Debug, vedrete una serie di files che si chiamano:

NomeFile.g.cs, NomeFile.g.i.cs, NomeFile.baml

Questi sono i file derivati dalla parte XAML dell'applicazione e sono generati dal Compilatore.

Se aprite App.g.cs troverete il Main.

[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public static void Main() {
SplashScreen splashScreen = new SplashScreen("images/mysplash.png");
splashScreen.Show(true);
MyNameSpace.App app = new MyNameSpace.App();
app.InitializeComponent();
app.Run();
}

Qui sopra un esempio di come appare in una delle mie applicazioni.

Presumo però che dove si trova il Main non sia la vera domanda, ma la domanda sia,

Dove metto il codice che con Windows Forms o la Console inserivo nel Main all'interno di Program.cs?

Se questa era la domanda la risposta è molto semplice, potete utilizzare l'evento OnStartup della classe App.cs, dove potete scrivere tutto il codice da chiamare prima di aprire la Main Window del vostro programma WPF:

Ne inserisco l'esempio base:

public partial class App : Application
{
	protected override void OnStartup(StartupEventArgs e)
	{
		base.OnStartup(e);
		string[] commandLineArguments = e.Args;
	}
}

Dopo la riga base.OnStartup(e), potete inserire quello che volete, ho messo come esempio il recupero degli eventuali parametri da linea di comando per la vostra applicazione.

 

 

 

 

 

C'e' un bellissimo post sul blog di Sabrina:

http://www.sabrinacosolo.com/lavorare-con-i-dati-progettiamo-una-mini-applicazione/

che spiega, modificando i vari punti di ingresso, come è strutturata una soluzione. Questo è uno dei topic che mi tengo sempre in bella vista quando inizio una nuova app.