public async Task <bool> Remove(TValue datasourceItemToDelete) { if (datasourceItemToDelete == null) { return(false); } var eventItemsToRemove = new List <TValue>(); //Find all the tree items that need to be removed var treeItemToRemove = FindTreeItem(datasourceItemToDelete); //This list includes the item to delete as well. var treeItemsToRemove = FindAllTreeItemChildren(treeItemToRemove); //Remove the child items from the datasource and treeItems foreach (var treeitem in treeItemsToRemove) { //Remove the child from the parent treeitem. DelinkTreeItemFromParent(treeitem); _treeItems.Remove(treeitem); //Remove the item from Original Datasource var childItemToRemove = FindObjectFromDatasource(treeitem); eventItemsToRemove.Add(childItemToRemove); Datasource.Remove(childItemToRemove); } await OnItemsRemoved.InvokeAsync(eventItemsToRemove); await NotifyDatasourceChanged(); Console.WriteLine($"Successfully removed {treeItemToRemove.Label}"); return(true); }
private void Window_KeyDown(object sender, KeyEventArgs e) { switch (e.Key) { case Key.Space: case Key.Play: case Key.Pause: case Key.MediaPlayPause: { if (lvwFiles.SelectedItems.Count == 0) { return; } OnTogglePaused?.Invoke(lvwFiles.SelectedItems.Cast <Models.PlaylistItem>()); return; } case Key.OemPlus: case Key.Add: { if (lvwFiles.SelectedItems.Count == 0) { return; } OnItemsVolumeChanged?.Invoke(lvwFiles.SelectedItems.Cast <Models.PlaylistItem>(), +1); return; } case Key.OemMinus: case Key.Subtract: { if (lvwFiles.SelectedItems.Count == 0) { return; } OnItemsVolumeChanged?.Invoke(lvwFiles.SelectedItems.Cast <Models.PlaylistItem>(), -1); return; } case Key.Delete: { if (lvwFiles.SelectedItems.Count == 0) { return; } OnItemsRemoved?.Invoke(lvwFiles.SelectedItems.Cast <Models.PlaylistItem>()); return; } } }