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é.