private void SetUnsaved(object sender, NotifyCollectionChangedEventArgs e)
 {
     if (e != null && e.IsAddOrRemove() && ReferenceEquals(sender, AllData))
     {
         if (e.NewItems != null)
         {
             foreach (object item in e.NewItems)
             {
                 BaseDataClass obj  = (BaseDataClass)item;
                 int           errs = obj.GetErrorCount(ErrorType.Error);
                 NumErrors += errs;
                 if (errs > 0)
                 {
                     NotifyErrorStateChanged(new ErrorStateChangedEventArgs(obj));
                 }
                 errs         = obj.GetErrorCount(ErrorType.Warning);
                 NumWarnings += errs;
                 if (errs > 0)
                 {
                     NotifyErrorStateChanged(new ErrorStateChangedEventArgs(obj));
                 }
                 obj.ErrorStateChanged += ObjectErrorStateChanged;
             }
         }
         if (e.OldItems != null)
         {
             foreach (object item in e.OldItems)
             {
                 BaseDataClass obj  = (BaseDataClass)item;
                 int           errs = obj.GetErrorCount(ErrorType.Error);
                 NumErrors -= errs;
                 if (errs > 0)
                 {
                     NotifyErrorStateChanged(new ErrorStateChangedEventArgs(obj));
                 }
                 errs         = obj.GetErrorCount(ErrorType.Warning);
                 NumWarnings -= errs;
                 if (errs > 0)
                 {
                     NotifyErrorStateChanged(new ErrorStateChangedEventArgs(obj));
                 }
                 obj.ErrorStateChanged -= ObjectErrorStateChanged;
             }
         }
     }
     if (!Unsaved)
     {
         Unsaved = true;
         SaveStateChanged?.Invoke();
         Timer?.Start();
         FileHelpers.SetWindowHeaders();
     }
 }