private List <ImageItem> GetLast8Pictures(int selectedIdOfVariationList) { if (!IsInPictureVariation()) { return(new List <ImageItem>()); } try { var subPictureList = ImageSelectionList.Skip(Math.Max(1, ImageSelectionList.Count - 8)); var result = new List <ImageItem>(subPictureList); while (result.Count < 8) { result.Add(View.CreateDefaultPictureItem()); } if (ImageSelectionListSelectedItem.ImageItem != null && !result.Contains(ImageSelectionListSelectedItem.ImageItem)) { result[selectedIdOfVariationList] = ImageSelectionListSelectedItem.ImageItem; } else if (ImageSelectionListSelectedItem.ImageItem == null) { for (var i = 0; i < result.Count; i++) { if (result[i].ImageFile == StoragePath.NoPicturePlaceholderImgPath) { result[i] = result[selectedIdOfVariationList]; break; } } result[selectedIdOfVariationList] = View.CreateDefaultPictureItem(); } else if (selectedIdOfVariationList >= 0) // contains selected item, need swap to selected index { var indexToSwap = result.IndexOf(ImageSelectionListSelectedItem.ImageItem); var tempItem = result[selectedIdOfVariationList]; result[selectedIdOfVariationList] = ImageSelectionListSelectedItem.ImageItem; result[indexToSwap] = tempItem; } return(result); } catch (Exception e) { View.ShowErrorMessageBox("Failed when generating picture aspect.", e); Logger.LogException(e, "GetLast8Pictures"); return(new List <ImageItem>()); } }