【发布时间】:2014-03-28 16:54:59
【问题描述】:
在显示我的应用程序的主窗口之前,我的 WPF 应用程序调用一个单独的项目来处理登录过程。这会产生问题并导致“应用程序关闭”错误,因为应用程序中的第一个窗口已关闭。在显示主窗口之前如何处理登录过程?我发现的每一次搜索都会出现对 Prism 或 MEF 的引用……我无法使用。
【问题讨论】:
在显示我的应用程序的主窗口之前,我的 WPF 应用程序调用一个单独的项目来处理登录过程。这会产生问题并导致“应用程序关闭”错误,因为应用程序中的第一个窗口已关闭。在显示主窗口之前如何处理登录过程?我发现的每一次搜索都会出现对 Prism 或 MEF 的引用……我无法使用。
【问题讨论】:
如果您想从应用程序的一开始就控制一切,您需要创建自己的 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);
}
【讨论】:
为防止应用程序关闭错误,您可以将Application.ShutdownMode 更改为OnExplicitShutdown。并在需要时显式调用Application.Shutdown Method 以关闭您的应用程序。
【讨论】:
您是否尝试将代码添加到 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 方法。
【讨论】: