TOC

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

En WPF-applikation:

Command-line parameters in WPF

Kommandoradsparametrar är en teknik där du skickar en uppsättning parametrar till en applikation som du vill köra igång för att påverka den. Det vanligaste exemplet är att öppna applikationen genom en specifik fil, exempelvis i ett redigeringsprogram. Du kan prova detta med applikationen Anteckningar (Notepad) i Windows genom att välja Kör från Start-menyn, eller trycka på Windows-tangenten + R, och skriva:

notepad.exe c:\Windows\win.ini

Detta kommer att öppna Notepad med filen win.ini öppen (du kan komma att behöva justera filens sökväg). Notepad letar efter en eller flera parametrar och använder dem, och din applikation kan göra samma sak!

Kommandoradsparametrar skickas till din WPF-applikation via eventet Startup, som vi prenumererade på i artikeln om App.xaml. Vi kommer att göra samma sak i detta exempel och sedan använda det värde som skickas vidare genom metod-argumenten. Först redigerar vi 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>

Allt vi gör här är att prenumerera på eventet Startup som ersätter propertyn StartupUri. Eventet implementeras sedan i 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();
		}
	}
}

Vi använder här StartupEventArgs. Det skickas in i applikationens Startup-event med namnet e. Den har propertyn Args, som är en array av strängar. Kommandoradsparametrar separeras med mellanslag, om inte mellanslaget finns inom en citerad sträng.

Test av kommandoradsparameter

Om du kör exemplet ovan kommer ingenting hända eftersom inga kommandoradsparametrar har angetts. Visual Studio gör det dock enkelt att testa detta i din applikation. I Solution Explorer-menyn högerklickar du på "[Projektets namn] properties" och går sedan till fliken Debug, där du kan definiera en kommandoradsparameter. Det bör se ut ungefär såhär:

Kör nu igång applikationen och du kommer få se den svara på din parameter.

Meddelandet är dock inte särskilt användbart. Istället kan du välja att skicka det till constructorn för huvudfönstret MainWindow, eller anropa en publik öppen metod för den enligt nedan:

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

Möjligheter i kommandoraden

I det här exemplet testar vi om det finns exakt ett argument. Om så är fallet använder vi det som filnamn. I ett verklighetsbaserat exempel kan du samla flera argument och använda dem för olika saker, som att slå på eller av en viss funktion. Du skulle göra detta genom att loopa igenom hela listan av inskickade argument och samla in den information du behöver för att använda i din applikation. Det tas dock inte upp i denna artikel.


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!
Table of Contents