This article has been localized into Russian by the community.
Параметры командной строки WPF
Параметры командной строки это способ, которым вы можете передать набор параметров в приложение, которое вы хотите запустить, чтобы изменить его поведение каким-либо образом. Типичным примером является запуск приложения с указанием конкретного файла, например открытие файла в редакторе. Вы можете попробовать запустить встроенный в Windows редактор Notepad следующим образом (выберете Run из меню Start или нажмите комбинацию WindowsKey-R):
notepad.exe c:\Windows\win.ini
Эта команда откроет файл win.ini в блокноте (нужно изменить путь до win.ini, если он находится в другом месте). Блокнот обрабатывает переданные ему параметры и использует их. Ваша программа тоже может так делать!
Параметры командной строки передаются в ваше WPF приложение через событие Startup, на которое мы подписались в примере кода из статьи App.xaml. В этом примере мы сделаем то же самое, а затем будем использовать значение, переданное через аргументы метода. Во-первых, файл App.xaml:
<Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
<Application.Resources></Application.Resources>
</Application>
Чтобы подписаться на событие Startup, мы изменяем свойство StartupUri. Саму подписку мы добавляем в App.xaml.cs:
using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow wnd = new MainWindow();
if(e.Args.Length == 1)
MessageBox.Show("Now opening file: \n\n" + e.Args[0]);
wnd.Show();
}
}
}
Внутри метода мы используем StartupEventArgs. Этот параметр передаётся в наш метод с названием e. Он содержит свойство Args, представляющее из себя массив строк. Параметры командной строки разделены пробелами, кроме случая, когда пробелы находятся внутри строк, органиченных двойными кавычками.
Тестируем параметры командной строки
Если вы запустите приведённый выше пример, ничего не произойдёт, так как мы не передали ни одного параметра. К счастью, Visual Studio позволяет легко это исправить. В панели элементов выбирете Проект(Project), а затем Свойства: [название проекта]...("[Project name] properties"). После этого перейдите на вкладку Отладка(Debug) и в поле параметров командной строки введите нужные параметры. Это должно выглядеть примерно так:
Запустите программу и убедитесь, что она показывает вам сообщение.
Конечно, это сообщение бесполезно. Вместо этого вы можете передать параметр в конструктор вашего главного окна или вызвать публичный метод открытия файлов в него, например:
using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow wnd = new MainWindow();
// The OpenFile() method is just an example of what you could do with the
// parameter. The method should be declared on your MainWindow class, where
// you could use a range of methods to process the passed file path
if(e.Args.Length == 1)
wnd.OpenFile(e.Args[0]);
wnd.Show();
}
}
}
Возможности командной строки
В нашем примере мы проверяем, что нам передан единственный параметр. Если это так, мы используем его в качестве имени файла. В реальности же вам может потребоваться собирать несколько параметров и даже перебирать несколько их вариантов, к примеру, чтобы включать/выключать отдельные настройки программы. Для этого нужно циклично пройти по всем параметрам, собирая информацию, которую нужно обработать, но это выходит за рамки текущей статьи.