private void SaveChanges(bool ShowRequest) { TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); MemoryStream ms = new MemoryStream(); textRange.Save(ms, DataFormats.Text); ms.Position = 0; byte[] newHash = Crypto.GetMD5(ms); if (Crypto.CompareHash(textHash, newHash)) { ms.Dispose(); return; } if ((ShowRequest) && (MessageBox.Show(this, "Сохранить изменения", "Сохранение", MessageBoxButton.OKCancel) != MessageBoxResult.OK)) { ms.Dispose(); return; } ms.Position = 0; try { element.ChangeContent(ms); } catch (Exception ex) { MessageBox.Show(ex.Message); } ms.Dispose(); textHash = newHash; }