TOC

This article has been localized into Italian by the community.

Un'applicazione WPF:

Parametri su linea di comando in WPF

I parametri della riga di comando sono una tecnica in cui è possibile passare un set di parametri ad un'applicazione che si desidera avviare ed in qualche modo influenzarla. L'esempio più comune è quello di far aprire all'applicazione un file specifico, ad es. in un editor. Puoi provare tu stesso con l'applicazione Blocco note integrata di Windows, eseguendo (seleziona Esegui dal menu Start o premi [WindowsKey-R]):

notepad.exe c:\Windows\win.ini

Questo aprirà il Notepad con il file win.ini aperto (potrebbe essere necessario modificare il percorso in modo che corrisponda al sistema). Notepad cerca semplicemente uno o più parametri e quindi li usa, la tua applicazione può fare lo stesso!

I parametri della riga di comando vengono passati all'applicazione WPF tramite l'evento di avvio, a cui ci siamo sottoscritti nell'articolo App.xaml. Faremo lo stesso in questo esempio e quindi useremo il valore passato attraverso gli argomenti del metodo. Innanzitutto, il file 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>

Tutto ciò che facciamo qui è iscriverci all'evento Startup sostituendo la proprietà StartupUri. L'evento viene quindi implementato in 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();
		}
	}
}

Qui utilizzeremo StartupEventArgs. Esso viene passato all'evento di avvio dell'applicazione, con il nome 'e'. Ha la proprietà Args, che è una matrice di stringhe. I parametri della riga di comando sono separati da spazi, a meno che lo spazio non si trovi all'interno di una stringa tra le virgolette.

Prova dei parametri della riga di comando

Se si esegue l'esempio precedente, non si verificherà nulla, poiché non sono stati specificati parametri della riga di comando. Fortunatamente, Visual Studio semplifica il test della tua applicazione. Dal menu Progetto seleziona "Proprietà [nome progetto]", quindi vai alla scheda Debug , dove puoi definire un parametro della riga di comando . Dovrebbe assomigliare a qualcosa di simile a questo:

Prova ad eseguire l'applicazione e vedrai come risponde al tuo parametro

Certo, il messaggio non è utilissimo. Si potrebbe invece desiderare di passarlo al costruttore della finestra principale o chiamare un metodo pubblico aperto su di esso, in questo modo:

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

Possibilità della riga di comando

In questo esempio, testiamo se esiste esattamente un argomento ed in tal caso, lo utilizziamo come un nome file. In un esempio reale, potresti raccogliere diversi argomenti e persino usarli per le opzioni, ad es. attivare o disattivare una determinata funzione. Lo faresti scorrendo l'intero elenco di argomenti passati mentre raccogli le informazioni che devi processare, ma questo va oltre lo scopo di questo articolo.


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!