Ejemplo n.º 1
0
 public static void CheckChangesToClose(this ChildWindow child, System.ComponentModel.CancelEventArgs e)
 {
     var vmBase = child.DataContext as ViewModel;
     if (vmBase != null && vmBase.HasChanges)
     {
         SaveConfirmation saveConfirmation = new SaveConfirmation();
         saveConfirmation.Show();
         saveConfirmation.Closed += (s, t) =>
         {
             ChildWindow w = (ChildWindow)s;
             if (w.DialogResult.HasValue && w.DialogResult.Value)
             {
                 child.DialogResult = false;
                 vmBase.CancelChanges();
             }
         };
         if (e != null)
             e.Cancel = true;
     }
     else
         child.DialogResult = false;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// On tabitem clicked to close, check if it has changes to display a warning message
        /// </summary>
        /// <param name="sender">ClosableTabItem type</param>
        /// <param name="e">The parameter is not used.</param>
        void tabItem_CloseClicked(object sender, EventArgs e)
        {
            ViewModel vmBase;

            _closingTabItem = sender as ClosableTabItem;

            FrameworkElement fe = _closingTabItem.Content as FrameworkElement;
            Type contextType = fe.DataContext.GetType();

            vmBase = fe.DataContext as ViewModel;

            if (vmBase != null && vmBase.HasChanges)
            {

                SaveConfirmation saveConfirmation = new SaveConfirmation();
                saveConfirmation.Show();
                saveConfirmation.Closed += (s, t) =>
                {
                    ChildWindow w = (ChildWindow)s;
                    if (w.DialogResult.HasValue && w.DialogResult.Value)
                    {
                        RemoveTabItem();
                    }
                };
            }
            else
                RemoveTabItem();
        }