如何在Console Project中使用Main()启动窗口。

时间:2011-05-19 22:38:21

标签: c# wpf wpf-controls console console-application

我有一个控制台项目,但现在我需要打开一个用户界面。所以我使用的是3层模型(演示,业务,访问数据)。

在我的方法Main()中,我调用了表示层(如窗体中的应用程序或Wpf),因此,在表示层中是通过CONSOLE与用户交互。

现在我在表示层中添加一个名为“UserInterface.xaml”的窗口,而不是使用控制台。因为应该用INTERFACE而不是控制台。

我观察到在MainWindow中,被调用的是MainWindow.Show();

但我不知道如何调用我的“UserInterface.xaml”,因为没有.Show()方法。

这是我的方法主要:

public static void Main()
{
  MainWindow.Show(); // THIS IS WITH MainWindow.xaml
  UserInterface.???  // THIS IS MY CASE WITH UserInterface.xaml
}

那么有人可以告诉我如何从Main方法调用我的窗口吗?

2 个答案:

答案 0 :(得分:5)

你肯定是从错误的项目模板开始的。要使WPF窗口可见并具有交互性,您必须遵循UI线程的规则。其中包括将应用程序的主线程标记为STA线程并抽取消息循环。像这样:

class Program {
    [STAThread]
    public static void Main() {
        var app = new Application();
        app.Run(new MainWindow());
    }
}

请注意,Application.Run()是一个阻塞调用,在用户关闭主窗口之前不会返回。这是Windows工作方式的必然结果。

答案 1 :(得分:1)

假设UserInterface确实是一个窗口,这应该可行:

var window = new UserInterface();
window.Show();