예제 #1
0
 /// <summary>
 /// Stops running this <see cref="Toplevel"/>.
 /// </summary>
 public virtual void RequestStop()
 {
     if (IsMdiContainer && Running &&
         (Application.Current == this ||
          Application.Current?.Modal == false ||
          Application.Current?.Modal == true && Application.Current?.Running == false))
     {
         foreach (var child in Application.MdiChildes)
         {
             var ev = new ToplevelClosingEventArgs(this);
             if (child.OnClosing(ev))
             {
                 return;
             }
             child.Running = false;
             Application.RequestStop(child);
         }
         Running = false;
         Application.RequestStop(this);
     }
     else if (IsMdiContainer && Running && Application.Current?.Modal == true && Application.Current?.Running == true)
     {
         var ev = new ToplevelClosingEventArgs(Application.Current);
         if (OnClosing(ev))
         {
             return;
         }
         Application.RequestStop(Application.Current);
     }
     else if (!IsMdiContainer && Running && (!Modal || (Modal && Application.Current != this)))
     {
         var ev = new ToplevelClosingEventArgs(this);
         if (OnClosing(ev))
         {
             return;
         }
         Running = false;
         Application.RequestStop(this);
     }
     else
     {
         Application.RequestStop(Application.Current);
     }
 }
예제 #2
0
 internal virtual bool OnClosing(ToplevelClosingEventArgs ev)
 {
     Closing?.Invoke(ev);
     return(ev.Cancel);
 }
예제 #3
0
 private void Container_Closing(ToplevelClosingEventArgs obj)
 {
     Hide();
 }