【问题标题】:How to Show an External WPF Before MainWindow?如何在 MainWindow 之前显示外部 WPF?
【发布时间】:2014-03-28 16:54:59
【问题描述】:

在显示我的应用程序的主窗口之前,我的 WPF 应用程序调用一个单独的项目来处理登录过程。这会产生问题并导致“应用程序关闭”错误,因为应用程序中的第一个窗口已关闭。在显示主窗口之前如何处理登录过程?我发现的每一次搜索都会出现对 Prism 或 MEF 的引用……我无法使用。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    如果您想从应用程序的一开始就控制一切,您需要创建自己的 main 方法并将其用作“启动对象”(请参阅​​项目属性)。 More details can be found in another SO answer,但这是它的本质:

    [STAThread]
    public static void Main(string[] args)
    {
        // Do anything you like before running the main window.
        // ...
    
        // Proceed with usual application flow.
        var app = new MyApplication();
        var win = new MyWindow();
        app.Run(win);
    }
    

    【讨论】:

      【解决方案2】:

      为防止应用程序关闭错误,您可以将Application.ShutdownMode 更改为OnExplicitShutdown。并在需要时显式调用Application.Shutdown Method 以关闭您的应用程序。

      【讨论】:

        【解决方案3】:

        您是否尝试将代码添加到 App.xaml.cs 文件?您可以在某些地方放置在主窗口打开之前运行的代码。除了构造函数之外,您还可以在 App.xaml 文件中为 Startup 事件分配处理程序:

        <Application x:Class="CarSystem.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                 DispatcherUnhandledException="App_DispatcherUnhandledException" 
                 Exit="Application_Exit" 
                 Startup="Application_Startup" 
                 StartupUri="MainWindow.xaml">
        

        当然,您也可以将代码放入同一文件中的 Main 方法。

        【讨论】:

          猜你喜欢
          • 2022-08-18
          • 2022-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多