TOC

This article has been localized into Danish by the community.

En WPF Applikation:

Command-line parametre i WPF

Command-line parametre er en teknik, hvor du kan angive et sæt af parametre til en applikation du gerne vil starte, for at på en eller anden måde at have indflydelse på starten af applikationen. Det mest almindelige eksempel er når en applikation åbner med en specifik fil, f.eks. i word el. notepad. Du kan prøve det selv med den indbyggede Notepad applikation fra Windows, ved at køre enten i "kør" i startmenuen eller ved at holde "Windows" knappen + "R" og indsætte nedenstående:

notepad.exe c:\Windows\win.ini

Dette vil åbne Notepad via den win.ini fil der er åbnet(du skal måske justere filstien, så det matcher dit system). Notepad ser ganske enkelt efter en eller flere parametre og bruger dem. Din applikation kan gøre det samme!

Command-line parametrene er videregivet til din WPF applikation i gennem Startup eventen, som vi vil abonnere på, i App.xaml artiklen. Vi vil gøre det samme i dette eksempel og derefter videregive den værdi, der er bragt fra metode argumenterne. Først, App.xaml filen:

<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>

Alt hvad vi gør her, i ovenstående eksempel, er at abonnere på Startup eventen, erstatte StartupUri propertien. Eventen er derefter implementeret i klassen 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 er hvad vi bruger her. Den er videregivet ind til Application Startup eventen med navnet e. Den har propertien Args, som er et array af strings. Command-line parametrene er separeret af mellemrum, undtagen hvis mellemrummet er indeni den citerede(" ") string.

Teste command-line parameteren

Hvis du kører det ovenstående eksempel, vil der ingenting ske, fordi der ikke er specificeret nogle command-line parametre. Heldigvis, vil Visual Studio gøre det nemt at teste i din applikation. Fra Project menuen vælg "[Project name] properties" og derefter gå til Debug tabben, hvor du kan definere en command-line parameter. Det skal se ud ligesom dette:

Prøv at kør applikationen og så vil du se den svarer på din parameter.

Selvfølgelig, er meddelelsen ikke særlig brugbar. I stedet vil du måske få den til at passere til konstruktøren af dit main window eller kalde en public åben metode på den, ligesom her:

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

Command-line muligheder

I dette eksempel, testede vi om der var præcis et argument og hvis det er tilfældet, bruger vi det som et filnavn. I et eksempel fra den virkelige verden, vil du måske samle flere argumenter og endda bruge dem som indstillinger(options), f.eks. at vælge en bestemt feature til eller fra. Du kan gøre dette ved at løbe igennem hele listen af videregivne argumenter, imens information man behøver for at fortsætte, bliver opsamlet, men det er udenfor målet for denne 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!