private void OpenFileInternal(string filename) { var exitingFile = _openFiles.FirstOrDefault(openfile => openfile.FileName == filename); if (exitingFile != null) { SelectedFile = exitingFile; return; } var file = new OpenFileViewModel(this); file.Ready += delegate { Dispatcher.CurrentDispatcher.InvokeAsync(() => { try { file.OpenFile(filename); } catch (Exception ex) { OpenFiles.Remove(file); MessageBoxService.ShowMessage($"Error: {ex.Message}", Constants.AppTitle); } }); }; OpenFiles.Add(file); _recentFiles.Remove(filename); _recentFiles.Insert(0, filename); if (_recentFiles.Count > 10) { _recentFiles.RemoveAt(9); } SelectedFile = file; }
public void CloseFile(OpenFileViewModel file) { int index = OpenFiles.IndexOf(file); Debug.Assert(index >= 0); file.Dispose(); OpenFiles.RemoveAt(index); if (--index < 0) { index = 0; } if (OpenFiles.Count > 0) { SelectedFile = OpenFiles[index]; } }