Posts
83
Comments
165
Trackbacks
11
[WPF] WPF.Start()

Come per qualunque altra applicazione, anche le applicazioni WPF hanno bisogno di un entry point, ovvero il famoso metodo "Main" decorato con l'attributo [STAThread].

Con WPF abbiamo (almeno) tre modi per poter definire quale deve essere il "punto di ingresso" della nostra applicazione. Tralasciando il tradizionale metodo "lato C#" analiziamo gli altri due modi (molto simili) che XAML ci mette a disposizione:

1. Creo un file EntryPoint.xaml e il relativo EntryPoint.cs e li "lego" tra di loro:

2. Creo un unico file EntryPoint.xaml senza dover necessariamente definire il relativo file EntryPoint.cs

 

NOTA: In entrambi i casi la build action del file xaml deve essere impostata su ApplicationDefinition.

Dando un occhio alla cartella obj del nostro progetto, si nota subito che, in entrambe le soluzioni il compilatore genera un file EntryPoint.g.cs praticamente identico, se non per il fatto che, nel secondo caso, non avendo un corrispondente file C# con un namespace correttamente definito, il compilatore assegna al file creato il namespace XamlGeneratedNamespace.
E' in questo file che viene generato, oltre al metodo InitializeComponent(), il metodo che fungerà da entry point per la nostra applicazione:

Sarà che sono prolisso, sia quando parlo, sia quando scrivo, ma l'idea che il codice deve essere autoesplicativo ha sempre caratterizzato il mio modo di vedere...insomma se devo scegliere, preferisco di gran lunga la prima e più "completa" soluzione.

posted on giovedì 21 febbraio 2008 01:06 Print