In my WPF application I have created a window and show it as a dialog by calling it by the method ShowDialog(). But when I close the window by Close() method the Unloaded event is not fired for this dialog window.
MyWindow obj = new MyWindow();
obj.ShowDialog();
obj.Close();
Window is the root control that must be used to hold/host other controls (e.g. Button) as container. Page is a control which can be hosted in other container controls like NavigationWindow or Frame. Page control has its own goal to serve like other controls (e.g. Button). Page is to create browser like applications.
Advertisements. It is the root window of an XAML application which provides minimize/maximize option, Title bar, border, and close button. It also provides the ability to create, configure, show, and manage the lifetime of windows and dialog boxes.
That's a known issue.
Use this instead
yourWindow.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
private void Dispatcher_ShutdownStarted( object sender, EventArgs e )
{
//do what you want to do on closing
}
Read this for more details
Edit
If above is not working try this
yourWindow.Closing += new CancelEventHandler(YourWindow_Closing);
void YourWindow_Closing(object sender, CancelEventArgs e)
{
}
if you really want to get confirmation of closing i think its best to understand the life-cycle of a window and the relevant events it raises.
However the in my opinion the best source of confirmation is the Closed
Event. Other framework ways maybe unreliable
When a window closes, it raises two events: Closing and Closed.
Closing is raised before the window closes, and it provides a mechanism by which window closure can be prevented. One common reason to prevent window closure is if window content contains modified data. In this situation, the Closing event can be handled to determine whether data is dirty and, if so, to ask the user whether to either continue closing the window without saving the data or to cancel window closure. The following example shows the key aspects of handling Closing.
Further more
The Closing event handler is passed a CancelEventArgs, which implements the BooleanCancel property that you set to true to prevent a window from closing. +
If Closing is not handled, or it is handled but not canceled, the window will close. Just before a window actually closes, Closed is raised. At this point, a window cannot be prevented from closing.
Note
While a window can be explicitly closed through mechanisms provided in the non-client and client areas, a window can also be implicitly closed as a result of behavior in other parts of the application or Windows, including the following:
A user logs off or shuts down Windows.
A window's owner closes.
The main application window is closed and ShutdownMode is OnMainWindowClose.
Shutdown is called.
The following illustration shows the sequence of the principal events in the lifetime of a window.
The following illustration shows the sequence of the principal events in the lifetime of a window that is shown without activation (ShowActivated is set to false before the window is shown).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With