Application.Current.MainWindow在启动事件处理程序中为null

时间:2014-11-03 18:40:43

标签: wpf

我在Windows窗体中有很强的背景,而且我开始在WPF中工作。请考虑我的应用程序代码中的以下事件处理程序:

Private Sub Application_Startup(ByVal sender As Object, ByVal e As System.Windows.StartupEventArgs) Handles Me.Startup
    Debug.Print(Application.Current.MainWindow Is Nothing)
End Sub

这打印" True",表示Application.Current.MainWindow为空。如何在应用程序运行后立即访问主窗口实例? (即我知道此事件被解雇as soon as the application is run

1 个答案:

答案 0 :(得分:4)

“如果在启动期间需要访问主窗口,则需要从Startup事件处理程序手动创建一个新的窗口对象。” - 来源:http://msdn.microsoft.com/en-us/library/system.windows.application.startup(v=vs.110).aspx

所以基本上你必须在调用Application.Startup事件时创建主窗口。您也可以从App.xaml中删除StartupUri="MainWindow",只显示您创建的主窗口的实例。

的App.xaml

<Application x:Class="Namespace.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml" <---- Remove this
             Startup="Application_Startup"
             >
    <Application.Resources>

    </Application.Resources>
</Application>

App.xaml.cs

private void Application_Startup(object sender, StartupEventArgs e)
{
    MainWindow wnd = new MainWindow();
    wnd.Show();
}

我希望这能回答你的问题。