The "destructor" or finalizer as it is called in C# is called whenever the Garbage Collector feels like. You can trigger the Garbage Collector manually using System.GC.Collect(), but you probably don't want to do this. If your talking about Dispose() on the other hand you can make this being called by creating the window in a "using" clause:
using (var wnd = new MyWindow())
{
wnd.Owner = this;
wnd.ShowDialog();
}
This would make wnd.Dispose() be called when the using clause is done, and would basically be the same as writing:
var wnd = new MyWindow();
wnd.Owner = this;
wnd.ShowDialog();
wnd.Dispose();
About the usage of the IDisposable interface this question might be helpful - and several more on StackOverflow.