This article is currently in the process of being translated into Hungarian (~98% done).
Command-line parameters in WPF
A parancssori paraméterek alkalmazásával paraméter készletet adhatunk át az alkalmazásnak amit szeretnénk futtatni, annak érdekében hogy befolyásoljuk az alkalmazás paramétereit. Egy példa, amit gyakran alkalmaznak a fejlesztők, hogy az alkalmazásnak induláskor megadunk egy file elérhetőséget, amit az alkalmazásnak meg kell nyitnia induláskor, például szöveg szerkesztő stb. Kipróbálhatjuk ezt a beépített Windows Notepad alkalmazással (futtathatjuk A Start menüből a Run menüpont kiválasztásával, vagy nyomjuk meg a [WindowsKey-R] billentyű kombinációt):
notepad.exe c:\Windows\win.ini
Ez megnyitja a Notepad alkalmazást, benne a Win.ini tartalmával (lehetséges, hogy a file megfelelő elérhetőségéhez az utat be kell állítani a rendszerben). A Notepad egyszerűen olvassa a bemenő paramétert vagy paramétereket és alkalmazza azokat. A programozó által létrehozott alkalmazások ugyanezt tehetik.
A parancssori paramétereket a WPF alkalmazásban a Startup eseményen keresztül töltődnek fel, amire bejelentkezhetünk az App.xaml file-ban található programkódon keresztül. A következő példában azt láthatjuk, hogy az átadott paraméterek értékeit felhasználjuk egy metódus argumentumaként. Elsőként az App.xaml file:
<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>
Annyit kell csak tennünk hogy bejelentkezünk a Startup eseményre, felcserélve ezzel a StartupUri tulajdonságot. Az eseménykezelő megvalósítása az App.xaml.cs file-ban található:
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();
}
}
}
A StartupEventArgs esemény az amit a példában alkalmazunk. Ez betöltődik a Application Startup eseménykezelőbe mint esemény, e névvel. A tulajdonsága Args, ami egy sztringekből álló tömb. A parancssori paraméterek szóközzel vannak elválasztva, kivéve ahol a szóköz a sztring része,
A parancssori paraméterek tesztelése
A fenti kódrészlet futtatása után látható hogy nem történik semmi, mivel a parancssori paraméterek még nem lettek megadva. Szerencsére a Visual Studio fejlesztő környezetben egyszerűen tesztelhetjük az alkalmazást parancssori paraméterek megadásával. A Project menüben válasszuk ki a "[Project name] properties" menüpontot és menjünk a Debug fülre, ahol megadhatjuk a teszteléshez a parancssori paramétereket. Ez a következőképpen néz ki:
Próbáljuk futtatni az alkalmazást és láthatjuk, hogy az válaszol a beállított parancssori paraméterekre.
Persze az üzenet nem különösebben hasznos, ehelyett szükségünk lehet arra hogy a paramétereket átadjuk a fő ablak konstruktor metódusának, vagy meghívjunk egy publikus nyitó metódust, mint az alábbiakban:
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();
}
}
}
Parancssori paraméterek alkalmazásának lehetőségei
A példában ellenőríztük, hogy egy és csakis egy bemenő paraméter szerepel, és ha igen akkor azt file-névként értelmeztük és alkalmaztuk. A valóságban szükséges, hogy akár több paramétert is beolvassunk és alkalmazzunk, akár opcionálisan, például bizonyos tulajdonságokat ki- illetve bekapcsoljunk. Ezt megtehetjük úgy, hogy egy ciklusban olvassuk a megadott paramétereket és csak azokat a paramétereket gyűjtjük össze melyek számunkra szükségesek. Persze ennek a lehetőségnek a részletezése, bemutatása kívül esik ennek a dokumentumnak a keretein: