TOC

This article is currently in the process of being translated into Czech (~98% done).

WPF aplikace:

Parametry příkazového řádku ve WPF

Parametry příkazového řádku jsou technikou, ve které můžete předat sadu parametrů aplikaci, kterou chcete spustit, abyste ji nějak ovlivnili. Nejběžnějším příkladem je otevření aplikace s konkrétním souborem, např. v editoru. Můžete to vyzkoušet pomocí vestavěné aplikace Poznámkového bloku systému Windows spuštěním (vyberte možnost Spustit z nabídky Start nebo stisknutím klávesy [WindowsKey-R]) a napsaní následujícího:

notepad.exe c:\Windows\win.ini

Tím se otevře poznámkový blok a otevře soubor win.ini (možná budete muset upravit cestu tak, aby odpovídala vašemu systému). Poznámkový blok jednoduše hledá jeden nebo několik parametrů a pak je použije. A vaše aplikace může udělat totéž!

Parametry příkazového řádku jsou předány vaší aplikaci WPF prostřednictvím události Startup, kterou jsme popsali v článku App.xaml. V tomto příkladu provedeme totéž a potom použijeme hodnotu předanou prostřednictvím argumentů metody. Nejprve v souboru 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>

Vše, co děláme, je přihlásit se k odběru události Startup, která nahrazuje vlastnost StartupUri. Událost je pak implementována v 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();
		}
	}
}

To, čeho zde využijeme, je StartupEventArgs. Argument je předán do události Application Startup, s názvem e. Má vlastnost Args, což je pole řetězců. Parametry příkazového řádku jsou odděleny mezerami, pokud se mezera nenachází uvnitř řetězce citovaného vlákna.

Testování parametru příkazového řádku

Pokud spustíte výše uvedený příklad, nic se nestane, protože nebyly zadány žádné parametry příkazového řádku. Naštěstí Visual Studio usnadňuje testování ve vaší aplikace. Z nabídky Projekt vyberte vlastnost "[Název projektu]“ ("[Project name] properties" ) a přejděte na kartu Ladění (Debug), kde můžete definovat parametr příkazového řádku. Mělo by to vypadat nějak takto:

Zkuste spustit aplikaci a uvidíte, že na váš parametr reaguje.

Samozřejmě, že pouhá zpráva sama o sobě není příliš užitečná. Místo toho ji ale můžete chtít buď předat do konstruktoru hlavního okna nebo s ní volat veřejnou metodu, jako je tato:

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

Možnosti příkazového řádku

V tomto příkladu testujeme, zda existuje přesně jeden argument, a pokud ano, použijeme jej jako název souboru. V reálném příkladu můžete shromáždit několik argumentů a dokonce je použít jako možnosti k přepínání určité funkce např k jejímu zapnutí nebo vypnutí. To lze vyřešit opakováním celého seznamu argumentů předávaných při shromažďování informací, které je třeba provést, ale to už přesahuje rámec tohoto článku.

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!