Lors de l'exécution de mon programme en cliquant sur Run
ou en appuyant sur Ctrl + F5
, est-il possible d'ouvrir différentes fenêtres en fonction d'une condition de vérification?
C'est-à-dire que si une condition est remplie, 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 une fenêtre, il doit d'abord vérifier la condition comme
if(File.Exists(<path-to-file>)
Open Window 1
else
Open Window 2
Est-ce possible?
regardez App.xaml
retirer StartupUri="MainWindow.xaml"
ajouter Startup="Application_Startup"
nouveau gestionnaire d'événements
<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">
le code de formulaire derrière App.xaml.cs crée 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 l'a dit Nikhil Agrawal, modifier dynamiquement StartupUri
.
Cependant, vous pouvez toujours démarrer votre application à partir de public static void Main()
. Supprimez simplement l'attribut StartupUri="MainWindow.xaml"
Dans App.xaml
, Ajoutez une classe Program
à votre projet contenant une méthode Main
, puis accédez aux propriétés du projet et définissez la propriété 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, le STAThreadAttribute
est requis. Si vous avez besoin de votre propre version dérivée de Application
, comme la façon dont les projets WPF créent une classe dérivée App
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 directement la classe de base Application
et supprimer celle dérivée de votre projet.
Dans App.xaml
nous avons une balise Application
ayant l'attribut StartupUri
. Je pense que vous devriez écrire ce code dans la section App.xaml.cs
public App()
{
// Your Code
}
et définissez StartUpUri
sur le fichier xaml souhaité.