这是我的WPF应用程序中App
类的事件处理程序,在同一类的XAML之后:
<Application x:Class="ApptEase.Client.Prism.CSharp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="AppOnStartup">
<Application.Resources xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<ResourceDictionary Source="Styling/ApplicationStyles.xaml" />
</Application.Resources>
</Application>
private async void ApplicationStartup(object sender, StartupEventArgs e)
{
_splashWindow.Show();
try
{
await Init();
}
finally
{
//_splashWindow.Close();
}
var plVm = new PersonPickListViewModel();
await plVm.Populate();
var pickList = new PersonPickList(plVm);
//MessageBox.Show(_mainWindow, "Hello");
pickList.Show();
}
如果没有_splashWindow.Close()
注释,则pickList.Show()
调用无效。输出窗口中没有错误或任何有趣的消息,但应用程序仍在运行。添加MessageBox.Show
行后,在关闭消息框后,调用pickList.Show()
会导致以下异常:
InvalidOperationException 无法设置可见性或在窗口后调用Show,ShowDialog或WindowInteropHelper.EnsureHandle 闭合。
然后我认为关闭消息框必须改变一些东西,当我注释掉那一行时,它回到了原点,pickList.Show()
什么也没做。然后我冒险说任何事先关闭窗口都可以这样做,并注释掉_splashWindow.Close()
。现在我的pickList
很好地显示了,_splashWindow
就像魔术一样消失了。
这可能会发生什么?如果我在ApplicationStartup
事件中没有先关闭另一个窗口,为什么我只能打开我的'主'窗口?
答案 0 :(得分:0)
也许您忘记设置MainWindow
或StartupUri
属性?根据我的经验,如果你不做其中任何一项,屏幕上什么都不会发生,但是这个过程会继续运行。
…
MainWindow = pickList;
pickList.Show();