Ik ben momenteel bezig met het ontwikkelen van een applicatie die enige bestandsmanipulatie uitvoert en ik wil de manipulatie kunnen doen via de console of via een gebruikersinterface (ik koos voor WPF).
Ik wil eigenlijk zeggen: (psuedo)
if ( Environment.GetCommandLineArgs().Length > 0 )
{
//Do not Open WPF UI, Instead do manipulate based
//on the arguments passed in
}
else
{
//Open the WPF UI
}
Ik heb gelezen over een paar verschillende manieren om het WPF-venster/-toepassing programmatisch te starten, zoals:
Application app = new Application ();
app.Run(new Window1());
Maar ik weet niet helemaal zeker of ik dit gewoon in een consoletoepassing wil pluggen.
Heeft iemand praktische tips of aanbevelingen over hoe ik dit kan bereiken? De belangrijkste verwerkingsfunctionaliteit bevindt zich in een Helper-klasse die ik heb gemaakt. Dus eigenlijk wil ik ofwel een statische startmethode (zoals de standaard Console Application maakt) of de gebruikersinterface om toegang te krijgen tot de Helper-klasse, afhankelijk van de ingevoerde argumenten.
Antwoord 1, autoriteit 100%
In de klasse Application
is er een gebeurtenis “StartUp” die u kunt gebruiken . Het biedt u de argumenten die u verstrekt via de opdrachtprompt. Hier is een voorbeeld van MSDN:
App.xaml
<Application x:Class="WpfApplication99.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="App_Startup">
</Application>
App.xaml.cs
public partial class App : Application
{
void App_Startup(object sender, StartupEventArgs e)
{
// Application is running
// Process command line args
bool startMinimized = false;
for (int i = 0; i != e.Args.Length; ++i)
{
if (e.Args[i] == "/StartMinimized")
{
startMinimized = true;
}
}
// Create main application window, starting minimized if specified
MainWindow mainWindow = new MainWindow();
if (startMinimized)
{
mainWindow.WindowState = WindowState.Minimized;
}
mainWindow.Show();
}
}
Ik hoop dat dit zal helpen.
Antwoord 2, autoriteit 27%
Er zijn 2 opties om de opdrachtregelargumenten op te halen
1) Als je de argumenten OnStartup
wilt lezen. Dit is goed voor globale toegang van de Args
.
Overschrijf OnStartup
in App.xaml.cs
en bekijk de eigenschap Args
van de klasse StartupEventArgs
.
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
foreach (string arg in e.Args)
{
// TODO: whatever
}
base.OnStartup(e);
}
}
2) Een andere gemakkelijke manier is om de argumenten van het Omgevingsobject te lezen.
Omgeving.GetCommandLineArgs();
Dit kan overal in de applicatie worden gebruikt, zoals ook vanaf het formulier / de pagina.