Как запустить окно с Main () в консольном проекте.? - PullRequest
1 голос
/ 20 мая 2011

У меня есть консольный проект, но теперь мне нужно включить пользовательский интерфейс. Поэтому я использую трехуровневую модель (презентация, бизнес, доступ к данным).

В моем методе Main() я вызываю уровень представления (например, приложение в форме окна или Wpf), поэтому на уровне представления происходит взаимодействие с пользователем через CONSOLE.

Теперь я добавляю окно с именем «UserInterface.xaml» в слой презентации для использования вместо консоли. Потому что должно быть с интерфейсом, а не консоли.

Я заметил, что в MainWindow вызывается с MainWindow.Show ();

Но я не знаю, как вызвать мой «UserInterface.xaml», потому что не имеет метода .Show ().

Это мой метод Main:

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

Так может кто-нибудь сказать мне, как я могу вызвать мое окно из метода Main ??

Ответы [ 2 ]

5 голосов
/ 20 мая 2011

Вы определенно начали с неправильного шаблона проекта. Чтобы сделать окно WPF видимым и интерактивным, вы должны следовать правилам для потока пользовательского интерфейса. Это включает в себя пометку основного потока вашего приложения как потока STA и прокачку цикла сообщений. Как это:

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

Остерегайтесь того, что Application.Run () является блокирующим вызовом, он не вернется, пока пользователь не закроет главное окно. Это довольно неизбежное следствие работы Windows.

1 голос
/ 20 мая 2011

Предполагая, что UserInterface действительно окно, это должно работать:

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