private static void SwapItem(IFolderViewModel folder, int swapIndex, PokemonDragDropData data) { PokemonViewModel pokemon = data.Pokemon; int originalIndex = data.PokemonIndexInFolder; PokemonViewModel swapPokemon = folder.Pokemons[swapIndex]; folder.RemovePokemon(swapPokemon); data.SourceFolder.RemovePokemon(pokemon); if (data.SourceFolder == folder && swapIndex < originalIndex)//swap within a folder { folder.InsertPokemon(swapIndex, pokemon); folder.InsertPokemon(originalIndex, swapPokemon); /* if (swapIndex < originalIndex) { } else { folder.InsertPokemon(originalIndex, swapPokemon); folder.InsertPokemon(swapIndex, pokemon); } */ } else//swap between folders { data.SourceFolder.InsertPokemon(originalIndex, swapPokemon); folder.InsertPokemon(swapIndex, pokemon); } }