/// <summary>
        ///  Sets relay commands ( Relay commands provide communication between UI events and ViewModels )
        /// </summary>
        private void InitRelayCommands()
        {
            // On Delete Backup Operation command, do the following :
            DeleteCommand = new RelayCommand(OnDelete, CanDelete);

            // On Add new Backup Operation command, do the following :
            AddCommand = new RelayCommand(() =>
            {
                var newBackOp = new BackupOperation()
                {
                    Alias = "New Backup Operation"
                };
                DestinationInfo di = new DestinationInfo()
                {
                    Path = new SilentBackupService.Path()
                    {
                        AbsolutePath = "enter path here..."
                    }
                };
                newBackOp.Destinations.Add(di);
                BackOps.Add(newBackOp);
                // DestInfos.Add(di);
            }, () => { return(true); });

            // On Add new Backup Destinaion command, do the following :
            AddDestinationCommand = new RelayCommand(() => {
                DestinationInfo di = new DestinationInfo()
                {
                    Path = new SilentBackupService.Path()
                    {
                        AbsolutePath = "enter path here..."
                    }
                };
                SelectedBackOp.Destinations.Add(di);
                DestInfos.Add(di);
            }, () => { return(SelectedBackOp != null); });

            // On Toggle Enables/Disabled command, do the following :
            SwitchEnabledCommand = new RelayCommand(() =>
            {
                SelectedBackOp.Enabled = !SelectedBackOp.Enabled;
            }, () => { return(SelectedBackOp != null); });
        }
        /// <summary>
        ///  Sets relay commands ( Relay commands provide communication between UI events and ViewModels )
        /// </summary>
        public void InitRelayCommands()
        {
            //BackOps.CollectionChanged += UpdateBackupListUI;
            // On Delete Backup Operation command, do the following :
            DeleteCommand = new RelayCommand(() =>
            {
                int toBeDeleted = BackOps.IndexOf(SelectedBackup);
                BackOps.Remove(SelectedBackup);
                if (BackOps.Count > 0)
                {
                    SelectedBackup = BackOps.ElementAt((toBeDeleted == 0) ? 0 : (toBeDeleted - 1));
                }
                else
                {
                    SelectedBackup = null;
                }
                SaveConfiguration();
                RaisePropertyChanged("BackOps");
            }, () =>
            {
                return(selectedBackup_ != null);
            });

            // On Add new Backup Operation command, do the following :
            AddCommand = new RelayCommand(() =>
            {
                var newId     = BackOps?.Count > 0 ? BackOps.Max(x => x.Id) + 1 : 1;
                var newBackOp = new BackupOperation()
                {
                    Alias = "New Backup", Id = newId, Enabled = true
                };
                newBackOp.Source.AbsolutePath = MainWindow.PathPlaceholder.Replace("path", "source");
                BackOps.Add(newBackOp);
                SelectedBackup = newBackOp;
            }, () =>
            {
                //return BackOps.LastOrDefault() != null ? BackOps.LastOrDefault().IsValid : false;
                return(true);
            });

            // On Add new Backup Destinaion command, do the following :
            AddDestinationCommand = new RelayCommand(() =>
            {
                DestinationInfo di = new DestinationInfo()
                {
                    Path = new SilentBackupService.Path()
                    {
                        AbsolutePath = MainWindow.PathPlaceholder.Replace("path", "destination")
                    }
                };
                SelectedBackup.Destinations.Add(di);
                DestInfos.Add(di);
            }, () => { return(SelectedBackup != null); });

            // On Toggle Enables/Disabled command, do the following :
            SwitchEnabledCommand = new RelayCommand(() =>
            {
                SelectedBackup.Enabled = !SelectedBackup.Enabled;
            }, () => { return(SelectedBackup != null); });

            SaveCommand = new RelayCommand(() =>
            {
                configuration_.BackupOperations = BackOps;
                SaveConfiguration();
                RaisePropertyChanged("BackOps");
            }, () => { return(true); });

            DiscardCommand = new RelayCommand <BackupOperation>((rollback) =>
            {
                if (rollback != null)
                {
                    var backup = BackOps.SingleOrDefault(x => x.Id == rollback.Id);
                    BackOps.Insert(BackOps.IndexOf(backup), rollback);
                    BackOps.Remove(backup);
                    SelectedBackup = rollback;
                }
                else
                {
                    if (DeleteCommand.CanExecute(null))
                    {
                        DeleteCommand.Execute(null);
                    }
                }
            }, (rollback) => { return(true); });
        }