public void Undo() { if (isAsync) { if (newIdx >= 0 && oldIdx >= 0 && newIdx <= asyncObservableList.Count - 1 && oldIdx <= asyncObservableList.Count - 1) { asyncObservableList.Move(newIdx, oldIdx); } } else { if (newIdx >= 0 && oldIdx >= 0 && newIdx <= observableList.Count - 1 && oldIdx <= observableList.Count - 1) { observableList.Move(newIdx, oldIdx); } } }