C# 如何基于参数启动WPF

C# 如何基于参数启动WPF,c#,wpf,C#,Wpf,我目前正在开发一个执行一些文件操作的应用程序,我希望能够通过控制台或UI(我选择了WPF)执行操作 我很想说:(普苏埃多) 我已经了解了以编程方式启动WPF窗口/应用程序的几种不同方法,如: Application app = new Application (); app.Run(new Window1()); 但我不完全确定是否只想将其插入控制台应用程序 有人对我如何实现这一目标有最佳实践或建议吗?主要的处理功能在我创建的助手类中。因此,基本上,我需要一个静态启动方法(如标准控制台应用程序

我目前正在开发一个执行一些文件操作的应用程序,我希望能够通过控制台或UI(我选择了WPF)执行操作

我很想说:(普苏埃多)

我已经了解了以编程方式启动WPF窗口/应用程序的几种不同方法,如:

Application app = new Application ();
app.Run(new Window1());
但我不完全确定是否只想将其插入控制台应用程序


有人对我如何实现这一目标有最佳实践或建议吗?主要的处理功能在我创建的助手类中。因此,基本上,我需要一个静态启动方法(如标准控制台应用程序创建)或UI来访问Helper类,具体取决于传入的参数

应用程序
类中有一个事件“StartUp”,您可以使用它。它通过命令提示符为您提供参数。以下是一个例子:

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>

我希望这会有所帮助。

有两个选项可以获取命令行参数
1) 如果要在启动时读取参数
。这有利于全局访问
args

覆盖
App.xaml.cs
中的
OnStartup
,并查看
StartupEventArgs
类的
Args
属性

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        foreach (string arg in e.Args)
        {
            // TODO: whatever
        }
        base.OnStartup(e);
    }
}
2) 另一种简单的方法是从环境对象读取参数。

Environment.GetCommandLineArgs(); GetCommandLineArgs();
这可以从应用程序中的任何位置使用,如表单/页面。

这是正确的方法。除了上面的建议,我认为值得注意的是,如果App.xaml中存在StartupUri属性,则需要删除该属性。如果不这样做,您将生成两个窗口实例。应用程序启动的StartupEventArgs.Args更好。Environment.GetCommandLineArgs的问题在于,在从Visual Studio运行WPF项目时,它可能包含一些垃圾,如“.vhost.exe”。
public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        foreach (string arg in e.Args)
        {
            // TODO: whatever
        }
        base.OnStartup(e);
    }
}
Environment.GetCommandLineArgs();