WPF - choisissez la fenêtre de démarrage en fonction de certaines conditions
Lors de l'exécution de mon programme en cliquant sur Run ou en appuyant sur Ctrl + F5, est-il possible d'ouvrir des fenêtres différentes en fonction d'une condition de vérification?
i.e. si une condition est satisfaite je souhaite ouvrir une fenêtre particulière, mais si ce n'est pas le cas je veux ouvrir une autre fenêtre.
il devrait être comme avant d'ouvrir n'importe quelle fenêtre il devrait d'abord vérifier l'état comme
if(File.Exists(<path-to-file>)
Open Window 1
else
Open Window 2
Est-ce possible?
3 réponses
regarder App.xaml
supprimer StartupUri="MainWindow.xaml"
ajouter Startup="Application_Startup" nouveau Gestionnaire d'événement
<Application x:Class="YourProject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
Code du formulaire derrière App.XAML.cs créer Application_Startup comme...
private void Application_Startup(object sender, StartupEventArgs e)
{
//add some bootstrap or startup logic
var identity = AuthService.Login();
if (identity == null)
{
LoginWindow login = new LoginWindow();
login.Show();
}
else
{
MainWindow mainView = new MainWindow();
mainView.Show();
}
}
Vous pouvez utiliser App.xaml pour démarrer votre application et, comme Nikhil Agrawal l'a dit, changer StartupUri dynamiquement.
cependant, vous pouvez toujours démarrer votre application à partir de public static void Main(). Il suffit de supprimer le StartupUri="MainWindow.xaml" l'attribut App.xaml, Ajouter un Program classe à votre projet contenant un Main méthode, puis allez dans les propriétés du projet et définissez l'objet de démarrage à YourAssemblyName.Program.
[STAThread]
public static void Main(string[] args)
{
var app = new Application();
var mainWindow = new MainWindow();
app.Run(mainWindow);
}
Remarque:STAThreadAttribute est obligatoire. Si vous avez besoin de votre propre version dérivée de Application, comme la façon dont les projets du FPF créent un App classe par défaut, vous pouvez l'utiliser dans le Main à la place de Application. Mais, si vous n'en avez pas besoin, vous pouvez simplement utiliser la base Application classe directement et supprimer les dérivées à partir de votre projet.
App.xaml nous avons Application balise avoir StartupUri l'attribut. Je pense que tu devrais écrire ce code dans App.XAML.section cs
public App()
{
// Your Code
}
et définissez StartUpUri vers le fichier XAML désiré.