public void MakeHistory(string id = "") { if (!TrackChanges) { return; } if (id == null) { id = ""; } if (id == "" || id != lastid) { UndoBuffer.AddLast(Model.Clone()); RedoBuffer.Clear(); if (UndoBuffer.Count > 100) { UndoBuffer.RemoveFirst(); } UnsavedChanges++; Device.BeginInvokeOnMainThread(() => { Save.ChangeCanExecute(); Undo.ChangeCanExecute(); Redo.ChangeCanExecute(); }); } lastid = id; }