TOC

This article has been localized into Russian by the community.

Приложение WPF:

Параметры командной строки 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 позволяет легко это исправить. В панели элементов выберете Проект, а затем Свойства: [название проекта].... После этого перейдите на вкладку Отладка и в поле параметров командной строки введите нужные параметры. В студии это выглядит примерно так:

Запустите программу и убедитесь, что она показывает вам сообщение.

Конечно, само сообщение не особо полезно. Вместо этого вы можете передать параметр в конструктор вашего главного окна или выполнить с ним какие-нибудь действия, пример:

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

Возможности командной строки

В нашем примере мы проверяем, что нам передан единственный параметр. Если это так, мы используем его в качестве имени файла. В реальности же вам может потребоваться просматривать все переданные параметры, к примеру, чтобы включать/выключать отдельные настройки программы. Для этого нужно в цикле пройтись по всем параметрам, собирая нужную информацию, но это выходит за рамки текущей статьи.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!