Example #1
0
        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();
        }
Example #2
0
        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();
        }