public void Import(object parameter) { string[] paths; // 打开文件(允许多选) var dialog = new Microsoft.Win32.OpenFileDialog { Multiselect = true, InitialDirectory = Environment.CurrentDirectory, Filter = "图像文件(*.bmp, *.jpg, *.png)|*.bmp;*.jpg;*.png" }; if ((bool)dialog.ShowDialog()) { paths = dialog.FileNames; foreach (string path in paths) { // 向SourceImages中逐个添加SourceImage对象。 var sourceImage = new Models.OriginImage(path, ListBoxItemCheckBoxClickEvent, RemoveImageClickEvent); SourceImages.Add(sourceImage); } SelectedIndex = 0; // 检查全选按钮的情况 ListBoxItemCheckBoxClickEvent.Execute(this); } GC.Collect(); }
public void RemoveImageClick(object parameter) { var index = SelectedIndex; // 删除后Index超出索引范围的处理方案: // 如果是第一个图像被删除,则当前默认选中下一张图片 // 如果是最后一个图像被删除,则当前默认选中上一张图片 // 如果是超过3张图片的列表,则当前默认选中下一张图片 // 如果只剩下一张图片,就直接删除,还原初始状态 if (index == 0 && SourceImages.Count > 1) { SelectedIndex++; } else if (index == SourceImages.Count - 1 && SourceImages.Count > 1) { SelectedIndex--; } else if (SourceImages.Count - 1 > 0) { SelectedIndex++; } Models.Utility.DeleteFolder(System.IO.Path.Combine(App.AprheuaCategoriesFolder, SourceImages[index].Name)); SourceImages.Remove(SourceImages[index]); // 在删除图片之后更新多选框的状态 ListBoxItemCheckBoxClickEvent.Execute(this); ShowBlockOverlayCheckBoxIsChecked = false; // 手动触发GC GC.Collect(); }