private void LeaseBook() { Action redo = () => { SelectedBook.LeasedTo = Session.Current.LoggedInUser; LeaseCommand.RaiseCanExecuteChanged(); OnPropertyChanged("SelectedBook"); BookList.Refresh(); }; Action undo = () => { SelectedBook.LeasedTo = string.Empty; LeaseCommand.RaiseCanExecuteChanged(); OnPropertyChanged("SelectedBook"); BookList.Refresh(); }; history.AddAndExecute(new RevertableCommand(redo, undo)); UndoCommand.RaiseCanExecuteChanged(); RedoCommand.RaiseCanExecuteChanged(); ClientLogger.Log($"{Session.Current.LoggedInUser} leased book {selectedBook.BookName}", Common.LogLevel.Info); }