Hi Guys, I have loaded a collection of images in the listBox and I display them in the ImageBox for further modification when I click on each image.
I have a button to delete the image, when i use the below function I'm getting a message, 'Image is being used'.
How can i delete the image & select another image? Thank you very much for your help & support.
Delete Function:
private void bDeletePhoto_Click(object sender, RoutedEventArgs e) { currImgHandler.ClearImage(); ImageFileCollectionViewModel viewModel = imageListBox.DataContext as ImageFileCollectionViewModel; if (viewModel != null) { ImageFileViewModel image = imageListBox.SelectedItem as ImageFileViewModel; if (image != null) { //remove physical file from disk: File.Delete(image.FileName); //remove item from ObservableCollection: viewModel.AllImages.Remove(image); } } }
ListBox Select Item & display in the Image:
CurrentImageHandler currImgHandler; private string saveFilname; private void showImage(object sender, SelectionChangedEventArgs args) { ListBox list = ((ListBox)sender); if (list != null) { int index = list.SelectedIndex; if (index >= 0) { ImageFileViewModel image = imageListBox.SelectedItem as ImageFileViewModel; if ((image != null) ) { Uri uriSource = new Uri(image.FileName, UriKind.RelativeOrAbsolute); ViewedPhoto.Source = new BitmapImage(uriSource); ViewedCaption.Content = image.ShortName.ToString(); saveFilname = image.FileName.ToString(); currImgHandler.CurrentFileHandler.Load(saveFilname); PaintImage(); } } } } private void PaintImage() { System.IO.MemoryStream stream = new System.IO.MemoryStream(); currImgHandler.CurrentBitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp); stream.Position = 0; byte[] data = new byte[stream.Length]; stream.Read(data, 0, Convert.ToInt32(stream.Length)); BitmapImage bmapImage = new BitmapImage(); bmapImage.BeginInit(); bmapImage.StreamSource = stream; bmapImage.EndInit(); ViewedPhoto.Source = bmapImage; //ImageBox }