代码执行所有的onStartup()而不等待视图中的用户输入

本文关键字:视图 等待 输入 用户 执行 onStartup 代码 | 更新日期: 2023-09-27 18:17:05

希望这有意义。

我有这样的东西:

protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            if (!Directory.Exists(dataFolder))
            {
                Directory.CreateDirectory(dataFolder);
            }
            try
            {
               using (DataContext context = new DataContext())
                   {
                        context.Database.CreateIfNotExists();
                   }
            }
            catch (IOException ex)
            {
            }
            KeyProgram.Show();
            if (Manager.KeyExists == true)
            {
            MainWindowViewModel viewModel = new MainWindowViewModel();
            this.MainWindow = new MainWindow();
            this.MainWindow.DataContext = viewModel;
            this.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;
            Helper.WindowDialogService.SetOwner(this.MainWindow);
            viewModel.Init();
            this.MainWindow.Show();
            }
            else {
                Console.WriteLine("Please try again"); 
            } 
        }

在显示我的licensekey窗口后,我想中断,以便系统希望用户输入(用户在许可密钥中键入),然后继续运行if-else语句(at if (LicenseKeyManager))。licenseKeyExists == true))。

然而目前,onStartup,应用程序只是先运行所有的代码,然后如果我输入关键字并验证它,它不会运行if语句,因为它已经运行了。

在继续执行if语句之前,如何中断视图中的用户输入?

现在在LicenseKeyProgram.Show()之后,如果我在if语句中设置了一个断点,应用程序不会让用户输入任何东西,因为它在加载时卡住了(不能在窗口上执行任何操作)。

我需要一个事件处理程序在这里或…?

代码执行所有的onStartup()而不等待视图中的用户输入

使用ShowDialog代替Show。

相关MSDN链接:

http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog%28v=vs.110%29.aspx


哦,等等,还有一个问题,我可以得到用户输入,但应用程序从来没有运行/命中if-else语句?为什么?

你必须在调用其他窗口的showdialog之前设置主窗口,否则它将触发应用程序的关闭(因为当所有窗口都关闭时,应用程序将关闭)。

的例子:

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
    MainWindow window = new MainWindow();
    Window1 test = new Window1();
    test.ShowDialog();
    if (test.InvalidLicense)
    {
        Shutdown();
        return;
    }
    window.Show();
}

资源:

WPF在主窗口前显示对话框

http://www.ageektrapped.com/blog/the-wpf-application-class-overview-and-gotcha/