private void AddListItem(string[] fileNames, string method) // ListBox에 원소를 추가하는 메소드 { int count = ImagesList.Items.Count + 1; foreach (var fileName in fileNames) { if (method == "drop") { // 드래그 & 드랍을 통한 파일 업로드시 파일 확장자를 정규식으로 확인 if (!Regex.IsMatch(fileName, @"[^\s]+(\.(?i)(jpg|png|gif|bmp))$")) { MessageBox.Show($"{fileName}은\n이미지 파일이 아닙니다.", "ERROR", MessageBoxButton.OK, MessageBoxImage.Error); continue; } } // 이미지 컨트롤 인스턴스 생성 후 Listbox에 추가 ImageControl imc = new ImageControl(); imc.fileName.Text = Path.GetFileName(fileName); imc.index.Content = count++; imc.uri.Source = ImageOrientation.SetBitmapSource(fileName); imc.OriginalUrl = fileName; ImagesList.Items.Add(imc); // UI 블락을 방지하여 업로드중인 상황임을 사용자에게 알리기 위한 Dispatcheer Dispatcher.Invoke(DispatcherPriority.Render, EmptyDelegate); } }
private void ImagesList_SelectionChanged(object sender, SelectionChangedEventArgs e) // ListBox에서 이미지 선택 변경 이벤트 핸들러 { if (ImagesList.SelectedItem == null) { return; } // 선택된 ListBox 요소를 ImageControl로 형변환 후 selectedImage 이미지 변경 ImageControl seleted = (ImageControl)ImagesList.SelectedItem; selectedImage.Source = ImageOrientation.SetBitmapSource(seleted.OriginalUrl); selectedImgPath = selectedImage.Source.ToString().Replace("file:///", ""); }