public void RemoveSelected() { if (ItemCount > 0 && SelectedCount > 0) { // Sort by index in the QueueData list to prevent positions shifting due to removes var sortedByValue = SelectedIndexes.OrderByDescending(rowItem => rowItem); // Once sorted, remove each selected item foreach (var index in sortedByValue) { RemoveAt(index); } selectedIndices.Clear(); OnSelectedIndexChanged(null); } }