当另一个首次打开和关闭时,为什么我的窗口不会打开?

时间:2016-11-20 09:23:31

标签: c# .net wpf

这是我的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事件中没有先关闭另一个窗口,为什么我只能打开我的'主'窗口?

1 个答案:

答案 0 :(得分:0)

也许您忘记设置MainWindowStartupUri属性?根据我的经验,如果你不做其中任何一项,屏幕上什么都不会发生,但是这个过程会继续运行。

…
MainWindow = pickList;
pickList.Show();