Lorsqu'un nouveau projet d'application WPF est créé, MainWindow.xaml
, App.xaml
et leur code correspondant derrière les classes sont générés automatiquement. Dans le App.xaml
il y a un attribut qui définit quelle fenêtre va être exécutée initialement et par défaut c'est StartupUri="MainWindow.xaml"
J'ai créé une nouvelle classe Dispatcher
dans le même projet. Au démarrage, je veux que l'instance de cette classe Dispatcher
soit construite et ensuite une de ses méthodes soit exécutée. Cette méthode créerait et afficherait en fait la fenêtre MainWindow
. Alors, comment puis-je modifier le App.xaml
ou App.xaml.cs
pour y arriver? Ou, si cela ne peut pas être fait par App
, comment dois-je l'implémenter? Merci.
Vous pouvez supprimer l'attribut StartupUri
de App.xaml.
Ensuite, en créant un remplacement pour OnStartup()
dans App.xaml.cs, vous pouvez créer votre nouvelle instance de votre classe Dispatcher
.
Voici à quoi ressemble mon implémentation rapide app.xaml.cs:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
new MyClassIWantToInstantiate();
}
}
}
Mise à jour
J'ai récemment découvert cette solution de contournement pour un bogue si vous utilisez cette méthode pour personnaliser le démarrage de l'application et soudain aucune des ressources au niveau de l'application ne peut être trouvée.
Essayez d'utiliser l'événement Startup (classe Application) - MSDN .
Vous pouvez afficher MainWindow dans ce gestionnaire d'événements - après avoir créé une instance Dispatcher.