TOC

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

A WPF application:

Command-line parameters in WPF

Parametrii liniei de comandă reprezintă o tehnică prin care puteți transmite un set de parametri unei aplicații pe care doriți să o lansați, pentru a o influența cumva. Cel mai obișnuit exemplu este de a deschide aplicația cu un anumit fișier, de ex. într-un editor. Puteți încerca acest lucru cu aplicația Notepad încorporată în Windows, rulând (selectați Run (Rulează) din meniul Start sau apăsați pe [WindowsKey(Tasta Windows)-R]):

notepad.exe c:\Windows\win.ini

Aceasta comandă va deschide Notepad cu fișierul win.ini deschis (poate fi necesar să ajustați calea adecvată sistemului dvs.). Notepad-ul caută pur și simplu unul sau mai mulți parametri și apoi îi folosește și aplicația dvs. poate face același lucru!

Parametrii liniei de comandă sunt transmise aplicației dvs. WPF prin evenimentul Startup, la care ne-am abonat în articolul App.xaml. Vom face același lucru în acest exemplu și apoi vom folosi valoarea transmisă prin argumentele metodei. În primul rând, fișierul 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>

Tot ce facem aici este să vă abonați la evenimentul Startup , înlocuind proprietatea StartupUri . Evenimentul este apoi implementat în 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 este ceea ce folosim aici. A fost trecut în evenimentul Startup de aplicații, cu numele e. Are proprietatea Args , care este o vector de șiruri de caractere. Parametrii liniei de comandă sunt separați de spații, cu excepția cazului în care spațiul se află în interiorul unui șir cotat.

Testarea parametrului liniei de comandă

Dacă executați exemplul de mai sus, nu se va întâmpla nimic, deoarece nu au fost specificați parametrii liniei de comandă. Din fericire, Visual Studio facilitează testarea acestui lucru în aplicația dvs. Din meniul Proiect selectați "Proprietăți nume de proiect" , apoi mergeți la fila Debug , unde puteți defini parametrul liniei de comandă . Ar trebui să arate ceva de genul:

Încercați să rulați aplicația și veți vedea că răspunde la parametrul dvs.

Desigur, mesajul nu este extrem de util. În schimb, puteți să-l transmiteți fie către constructorul ferestrei principale, fie să apelați o metodă publică cu el, ca mai jos:

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

Posibilitățile de linie de comandă

În acest exemplu, vom testa dacă există exact un singur argument și dacă este cazul, îl folosim ca nume de fișier. Într-un exemplu din lume reală , puteți colecta mai multe argumente și chiar le puteți utiliza pentru opțiuni, de ex. activarea sau dezactivarea unei anumite caracteristici. Puteți face acest lucru prin parcurgerea întregii listă de argumente transmise și colectați informațiile de care aveți nevoie pentru a continua, dar acest lucru depășește domeniul de aplicare al acestui articol.

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!