private async void BtnAdd_Click(object sender, RoutedEventArgs e) { var dialog = new CommonOpenFileDialog { IsFolderPicker = true, Multiselect = true }; if (dialog.ShowDialog() == CommonFileDialogResult.Ok) { foreach (var item in dialog.FileNames) { var duplicate = Dispatcher.Invoke(() => SpChapters.Children.Cast <ChapterItem>().Select(c => c.ChapterPath).Contains(item)); if (duplicate) { continue; } Dispatcher.Invoke(() => { var chapterItem = new ChapterItem(item); SpChapters.Children.Add(chapterItem); chapterItem.DelClicked += (s, eventArg) => { SpChapters.Children.Remove(s as UIElement); }; }); await Task.Delay(10).ConfigureAwait(false); } } }
private async void Grid_Drop(object sender, DragEventArgs e) { Dispatcher.Invoke(() => Grid_DragLeave(sender, e)); var files = e.Data.GetData("FileDrop") as IEnumerable <string>; if (files.Any(f => File.GetAttributes(f).HasFlag(FileAttributes.Directory))) { files = files.Where(f => File.GetAttributes(f).HasFlag(FileAttributes.Directory)); foreach (var item in files) { var duplicate = Dispatcher.Invoke(() => SpChapters.Children.Cast <ChapterItem>().Select(c => c.ChapterPath).Contains(item)); if (duplicate) { continue; } Dispatcher.Invoke(() => { var chapterItem = new ChapterItem(item); SpChapters.Children.Add(chapterItem); chapterItem.DelClicked += (s, eventArg) => { SpChapters.Children.Remove(s as UIElement); }; }); await Task.Delay(10).ConfigureAwait(false); } } }
public MainWindow(string[] chapters) : this() { foreach (var item in chapters) { if (SpChapters.Children.Cast <ChapterItem>().Select(c => c.ChapterPath).Contains(item)) { continue; } var chapterItem = new ChapterItem(item); SpChapters.Children.Add(chapterItem); chapterItem.DelClicked += (s, eventArg) => { SpChapters.Children.Remove(s as UIElement); }; } }