TOC

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

Una aplicació WPF:

Paràmetres de la línia de comandes en WPF

Els paràmetres de la línia de comandes són una tècnica on podeu passar un conjunt de paràmetres a una aplicació que voleu iniciar, per influir-la d’alguna manera. L’exemple més comú és fer que l’aplicació s’obri amb un fitxer específic, P.E. en un editor. Podeu provar-ho vosaltres mateixos amb l'aplicació Notepad de Windows, executant (Utilitzeu l'executable Executar del menú Inici o premeu [Tecla de Windows + R]):

notepad.exe c:\Windows\win.ini

Això obrirà el bloc de notes amb el fitxer win.ini obert (potser haureu d’ajustar la ruta per a que coincideixi amb el vostre sistema). El bloc de notes simplement busca un o diversos paràmetres i els utilitza, la vostre aplicació pot fer el mateix!

Els paràmetres de la línia de comandes es passen a la vostra aplicació WPF a través de l’esdeveniment anomenat Startup, al qual ens vam subscriure a l’article App.xaml. Farem el mateix en aquest exemple, i després utilitzarem el valor transmès a través dels arguments del mètode. Primer, el fitxer 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 el que fem aquí és subscriure'ns a l’esdeveniment Startup substituint la propietat StartupUri . L'esdeveniment és implementat després en 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();
		}
	}
}

El StartupEventArgs és el que fem servir aquí. Es passa a l’esdeveniment Application Startup amb el nom e. Té la propietat Args , que és una matriu(array) de cadenes(strings). Els paràmetres de la línia de comandes estan separats per espais, tret que l'espai estigui dins d'una cadena.

Provant la línia de comandes

Si executeu l’exemple anterior, no passarà res, perquè no s’ha especificat cap paràmetre de la línia de comandes. Afortunadament, Visual Studio facilita les proves a la teva aplicació. Des del menú Projecte seleccioneu "Propietats [nom del projecte]" i després aneu a la pestanya Depuració, on podeu definir un paràmetre de la línia de comandes. Hauria de ser semblant a una cosa així:

Proveu d'executar l'aplicació i veureu que respon al vostre paràmetre.

Per descomptat, el missatge no és gaire útil. En el seu lloc, potser voldreu passar-lo al constructor de la finestra principal o bé cridar un mètode obert al públic, com el següent:

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

Possibilitats de la línia de comandes

En aquest exemple, comprovem si hi ha exactament un argument i, si és així, el fem servir com a nom de fitxer. En un exemple del món real, podeu recopilar diversos arguments i fins i tot utilitzar-los per a opcions, per exemple activar o desactivar una determinada funció. Ho faríeu fent un recorregut per tota la llista d’arguments enviats mentre recopileu la informació que heu de procesar, però que queda fora de l’abast d’aquest article.


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!