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