【问题标题】:How Start a window with Main() in Console Project.?如何在控制台项目中使用 Main() 启动一个窗口。?
【发布时间】:2011-08-29 06:24:20
【问题描述】:

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

在我的方法Main()中我调用了表现层(如Window形式的应用程序或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 方法调用我的窗口吗?

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 是的,就我而言,我这样做: var app = new UserInterface();应用程序运行(新程序());但无法识别 .Run
  • 对,你搞错了。
  • 现在我打开了 [STAThread] 的窗口,但又关闭了!为什么会出现这种情况?我该怎么办??
【解决方案2】:

假设UserInterface 真的是一个窗口,这应该可以工作:

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

【讨论】:

  • 无法识别 .Show();... 并且 UserInterface 是一个窗口。
  • 在这种情况下,您将不得不向我们展示更多代码,因为如果 UserInterfaceWindow,它将具有 Show() 方法。 UserInterface 的源代码长什么样子?
  • 这是UserInterface类的一部分,你看到的是一个普通的窗口: public class UserInterface: Window { public event EventHandler OptionSelected;公共无效 SetPathCharger2() { InitializeComponent(); } }
  • @ale,然后UserInterface 确实有 Show() 方法,除非你的代码中Window 不是System.Windows.Window
猜你喜欢
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多