Gözlerinde farklı MainWindow.xaml.cs
, bunu deneyin:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Application.Current.Shutdown();
}
Bu bağlantı başına ShutdownMode
, XAML'de de ayarlayabilirsiniz :
http://msdn.microsoft.com/en-us/library/system.windows.application.shutdownmode.aspx
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
ShutdownMode="OnExplicitShutdown"
>
</Application>
Uygulamalar, yalnızca Shutdown
yöntemi Application
çağrıldığında çalışmayı durdurur . Kapatma, ShutdownMode
özelliğin değeriyle belirtildiği gibi örtük veya açık bir şekilde gerçekleşebilir .
Eğer ayarlarsanız ShutdownMode
için OnLastWindowClose
herhangi halen örneği pencereler ana pencere olarak ayarlanmış olsa bile, bir uygulama kapanmadan son pencere, (MainWindow bakınız) zaman Windows Presentation Foundation (WPF) örtülü Kapatma çağırır.
Bir ShutdownMode
ait OnMainWindowClose
nedenleri MainWindow kapanır, diğer pencereler şu anda açık olsa bile zaman örtük Kapatma çağırmak wpf.
Bazı uygulamaların ömrü, ana pencerenin veya son pencerenin ne zaman kapatıldığına bağlı olmayabilir veya pencerelere hiç bağlı olmayabilir. Bu senaryolar ShutdownMode
için OnExplicitShutdown
, Shutdown
uygulamayı durdurmak için açık bir yöntem çağrısı gerektiren özelliği olarak ayarlamanız gerekir . Aksi takdirde uygulama arka planda çalışmaya devam eder.
ShutdownMode
XAML'den bildirimli olarak veya koddan programlı olarak yapılandırılabilir.
Bu özellik yalnızca Application
nesneyi oluşturan iş parçacığından kullanılabilir .
Sizin durumunuzda, muhtemelen varsayılanı kullandığınız için uygulama kapanmıyor OnLastWindowClose
:
Eğer ayarlarsanız ShutdownMode
için OnLastWindowClose
herhangi halen örneği pencereler ana pencere olarak ayarlanmış olsa bile, bir uygulama kapanmadan son pencere, (görünce, WPF örtülü Kapatma çağırır MainWindow
).
Yeni bir pencere açtığınız ve kapatmadığınız için, kapatma çağrılmaz.