2013-07-17 7 views
1

Когда я делаю два вызова ShowDialog в WPF, первое окно открыто нормально, после закрытия второе не отображается.ShowDialog в WPF

<Application 
    x:Class="Test.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Startup="App_OnStartup"> 
</Application> 

private void App_OnStartup(object sender, StartupEventArgs e) 
{ 
    var windowA = new WindowA(); 
    windowA.ShowDialog(); 

    var windowB = new WindowB(); 
    windowB.ShowDialog(); 
} 

WindowA:

<Window x:Class="Test.WindowA" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="WindowA" Height="129.452" Width="313.356"> 
    <Grid> 
     <Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="139,54,0,0"/> 
    </Grid> 
</Window> 

public partial class WindowA : Window 
{ 
    public WindowA() 
    { 
     InitializeComponent(); 
    } 
} 

WindowB:

<Window x:Class="Test.WindowB" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="WindowB" Height="221.918" Width="300"> 
    <Grid> 
     <RadioButton Content="RadioButton" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="124,63,0,0"/> 
    </Grid> 
</Window> 

public partial class WindowB : Window 
{ 
    public WindowB() 
    { 
     InitializeComponent(); 
    } 
} 
+0

Второй не появляется, когда? Даже после того, как WindowA закрыт? Одновременно может отображаться только один модальный диалог. –

+0

Второй не появляется после закрытия первого. –

+0

ОК, вы можете проверить его снова. –

ответ

5

В WPF вы можете указать, когда приложение завершает работу и по умолчанию Application.ShutdownMode является OnLastWindowClose, что означает, что, когда последний Window закрыто приложение выключается и в вашем случае первого Window также последний. Когда вы открываете и закрываете первое Window, ваше приложение закрывается, и поэтому вы не видите второго Window. Вы должны были бы изменить ShutdownMode к OnExplicitShutdown

<Application ... ShutdownMode="OnExplicitShutdown"/> 

, но это означает, что даже при закрытии всех окон приложений все еще работает, так что вы должны явно вызвать Application.Shutdown() для завершения работы приложения, например, когда главное окно закрывается.

+0

Можете ли вы объяснить больше? –

+0

@MSA, какая часть нуждается в разъяснении? – dkozl

+0

Является ли это частью жизненного цикла приложения и где можно узнать об этих режимах? –

4

функция ShowDialog() вызывает окно модально. Что означает код после windowA.ShowDialog(); не будет выполняться до тех пор, пока это окно не будет закрыто.

+1

Второй не появляется после закрытия первого. –

Смежные вопросы