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

Как начать WPF на основе аргументов

В настоящее время я разрабатываю приложение, которое выполняет некоторые манипуляции с файлами, и я хочу иметь возможность делать манипуляции через консоль или через пользовательский интерфейс (я выбрал WPF).

Я очень хочу сказать: (psuedo)

if ( Environment.GetCommandLineArgs().Length > 0 )
{
    //Do not Open WPF UI, Instead do manipulate based
    //on the arguments passed in
}
else
{
    //Open the WPF UI
}

Я прочитал несколько разных способов запуска окна/приложения WPF программно, например:

Application app = new Application ();
app.Run(new Window1());

Но я не совсем уверен, что хочу просто подключить его к консольному приложению.

Есть ли у кого-нибудь лучшие практики или рекомендации относительно того, как я могу это достичь? Основная функциональность обработки - это класс Helper, который я создал. Поэтому в основном я либо хочу, чтобы статический метод запуска (например, создание стандартных консольных приложений) или пользовательский интерфейс для доступа к классу помощника в зависимости от переданных аргументов.

4b9b3361

Ответ 1

В классе Application есть событие "StartUp", которое вы можете использовать. Он предоставляет вам аргументы, которые вы предоставляете с помощью командной строки.

App.xaml

<Application x:Class="WpfApplication99.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         Startup="App_Startup">

App.xaml.cs

public partial class App : Application
{
    void App_Startup(object sender, StartupEventArgs e)
    {
        // Application is running
        // Process command line args
        bool startMinimized = false;
        for (int i = 0; i != e.Args.Length; ++i)
        {
            if (e.Args[i] == "/StartMinimized")
            {
                startMinimized = true;
            }
        }

        // Create main application window, starting minimized if specified
        MainWindow mainWindow = new MainWindow();
        if (startMinimized)
        {
            mainWindow.WindowState = WindowState.Minimized;
        }
        mainWindow.Show();
    }
}

Надеюсь, это поможет.

Ответ 2

Есть два варианта получения аргументов командной строки
1) Если вы хотите прочитать аргументы OnStartup. Это полезно для глобального доступа args.

Переопределить OnStartup в App.xaml.cs и посмотреть свойство args класса StartupEventArgs.

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        foreach (string arg in e.Args)
        {
            // TODO: whatever
        }
        base.OnStartup(e);
    }
}

2) Еще один простой способ - прочитать аргументы из объекта Environment.

Environment.GetCommandLineArgs();

Это можно использовать в любом месте приложения, например, из формы/страницы.