private async Task RemoveFilterEntriesAsync(Regex regex, ProgressDialogController controller) { var removeMessage = "Removing entry..."; await Task.Run(() => { var toRemove = DisplayedSongs .Where(x => !regex.IsMatch(x.Name)) .ToList(); controller.Minimum = 0; controller.Maximum = toRemove.Count; for (int i = 0; i < toRemove.Count; i++) { var currentItemNumber = i + 1; Application.Current.Dispatcher.Invoke(() => { DisplayedSongs.Remove(toRemove[i]); }); controller.SetProgress(currentItemNumber); controller.SetMessage(String.Format("{0} ({1}/{2})", removeMessage, currentItemNumber, toRemove.Count)); } }); }
// ---------- EventAggregator private void RemoveSongFromSongList(int index) { var toRemove = DisplayedSongs.ElementAt(index); DisplayedSongs.Remove(toRemove); this.songs.Remove(toRemove); this.UpdateSongIndices(); // Reset view. if (!DisplayedSongs.Any()) { DisplayedSongs = null; } }