Подтвердить что ты не робот

WPF - выберите окно запуска на основе некоторого условия

При запуске моей программы, нажав Run или нажав Ctrl + F5, можно ли открыть разные окна на основе некоторого условия проверки?

I.Е если какое-то условие выполнено, я хочу открыть конкретное окно, но если его не хочу открыть другое окно.

Похоже, что перед открытием любого окна сначала нужно проверить состояние, подобное

if(File.Exists(<path-to-file>)
    Open Window 1
else
    Open Window 2

Возможно ли это?

4b9b3361

Ответ 1

загляните в App.xaml

удалить StartupUri="MainWindow.xaml"

добавить Startup="Application_Startup" обработчик нового события

<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">

формировать код за App.xaml.cs create Application_Startup как...

    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();
        }
    }

Ответ 2

Вы можете использовать App.xaml для запуска своего приложения, и если вам нравится, как сказал Никил Агравал, динамически меняйте StartupUri.

Но вы все равно можете запустить свое приложение из public static void Main(). Просто удалите StartupUri="MainWindow.xaml" в App.xaml, создайте program.cs, содержащий основной метод.

[STAThread]
public static void Main(string[] args)
{
    MainWindow mainWindow = new MainWindow();

    var app = new Application();

    app.Run(mainWindow);
}

Ответ 3

В App.xaml имеется тег Application, имеющий атрибут StartupUri. Я думаю, что u должен написать этот код в разделе App.xaml.cs

public App()
{
      // Your Code
}

и установите StartupUri в желаемый файл xaml.