Приложение WPF без загрузки окна выдает автоматически - PullRequest
0 голосов
/ 03 октября 2018

Я настроил приложение WPF так, чтобы оно не загружало окно автоматически, изменив app.xaml.cs, как показано ниже, и установив действие сборки для Page.Я также удалил starturl из app.xaml.Я ввел класс контроллера, откуда запускается приложение, как вы можете видеть в приведенном ниже коде и в конструкторе для контроллера, который я создал и открыл новое окно.Я удалил оригинальное MainWindow, которое было создано автоматически при открытии приложения.

В любом случае проблема в том, что после открытия нового окна, которое я добавил в контроллер, я затем закрываю окно, и приложение завершает работу?Зачем?Я не хочу, чтобы приложение закрывалось, и я не понимаю, почему оно закрывается при закрытии окна.Или, другими словами, как я могу ввести окно, которое не приводит к завершению приложения при закрытии окна?Любая помощь с благодарностью.

using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;

namespace UserTraining
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        App()
        {
            InitializeComponent();
        }

        [STAThread]
        static void Main()
        {            
            App app = new App();
            UserTrainingController control = new UserTrainingController();
            app.Run();
        }

    }
}

UserTrainingController класс:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace UserTraining
{
    class UserTrainingController
    {
        public UserTrainingController()
        {
            IntroductionWindow w = new IntroductionWindow();
            w.Show();
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Приложение WPF имеет свойство ShutdownMode , значение которого является одним из членов перечисления ShutdownMode .Это может иметь три возможных значения: OnExplicitShutdown, OnLastWindowClose и OnMainWindowClose.

По умолчанию установлено значение OnLastWindowClose, что означает, что приложение будет закрываться при закрытии последнего окна или при вызове Application.Shutdown().Я подозреваю, что именно поэтому ваше приложение завершает работу, когда закрывается ваше вступление.

Вам нужно вместо этого установить ShutdownMode в OnExplicitShutdown.Таким образом, ваше приложение будет завершено только при явном вызове Application.Shutdown().

. Вы можете установить свойство ShutdownMode либо в коде, либо в файле App.xaml.

0 голосов
/ 03 октября 2018

После вызова UserTrainingController вы получите окно, показанное на экране с w.Show();.Когда вы закрываете окно, w.Show(); завершается и возвращается к вызывающей стороне, что является методом Main.Это последний метод в стеке.

Но затем вы запускаете другой метод, app.Run(), но он немедленно завершается, возвращаясь к методу Main, который после app.Run() больше не имеет ничего общего, поэтомутакже завершается.

Так как это был последний метод в стеке, стек пуст, что означает, что ваше приложение завершено.

Вам необходимо иметь родительское окно, из которого вы можете открыть свой пользовательскийокно.

Как правило, вы должны предотвращать опустошение стека:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...