我在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)
答案 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();
}
我希望这能回答你的问题。