是否可以在控制台模式下启动WPF应用程序?
public partial class App : Application
{
public App()
{
InitializeComponent();
}
}
<Application x:Class="WPF.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Application>
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
switch (args[0].ToLower())
{
case "/g": RunApplication(); break;
}
}
}
private static void RunApplication()
{
var application = new System.Windows.Application();
application.Run(new App());
}
Run Code Online (Sandbox Code Playgroud)
它将显示Argument类型'WPF.app'不能分配给参数类型'System.Windows.Window'.
解决它的任何解决方案?任何不同之间
1.public partial class App:申请
2.public partial class App:Window
您可以声明一个窗口然后以这种方式启动您的应用程序:
var application = new System.Windows.Application();
application.Run(new Window());
Run Code Online (Sandbox Code Playgroud)
编辑:
你似乎有点困惑,所以让我解释一下:
假设你有一个程序:
using System;
namespace ConsoleApplication
{
class Program
{
[STAThread]
static void Main(string[] args)
{
RunApplication();
}
private static void RunApplication()
{
var application = new System.Windows.Application();
application.Run();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将运行没有Window的WPF应用程序.
另一方面,如果您将一个Window传递给application.Run(),您将获得一个WPF窗口.应用程序不应该从Window派生,因为它应该从Application派生.
Application.Run方法不带参数或Window.它不需要应用程序.因此,如果您想要启动以前创建的应用程序,就像在那里一样,您应该执行以下操作:
private static void RunApplication()
{
var application = new App();
application.Run(); // add Window if you want a window.
}
Run Code Online (Sandbox Code Playgroud)
最后,如果您只想使用application.Run()而不必传递特定的Window,只需使用StartupUri在Application XAML中声明一个启动窗口:
<Application x:Class="WPF.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="SomeWindow.xaml">
</Application>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6490 次 |
| 最近记录: |