private static List<string> GetCheckedFilesBreathFirst(FileTreeViewModel obj) { var selectedItemList = new List<string>(); var rootQueue = new Queue<FileTreeViewModel>(); rootQueue.Enqueue(obj); while (rootQueue.Count > 0) { var next = rootQueue.Dequeue(); if (next.IsChecked == null) { foreach (FileTreeViewModel child in next.Children) { rootQueue.Enqueue(child); } } else if (next.IsChecked.Value) { selectedItemList.Add(next.FileSystemItem.FullName); foreach (FileTreeViewModel child in next.Children) { selectedItemList.Add(child.FileSystemItem.FullName); } } } return selectedItemList; }
private void LoadData(string path) { if (!Directory.Exists(path)) return; //ignore var rootCollection = new ObservableCollection<FileTreeViewModel>(); var dir = new DirectoryInfo(path); var root = new FileTreeViewModel(dir.Name, true, null, dir, this); rootCollection.Add(root); FileTreeView.DataContext = rootCollection; root.IsExpanded = true; }
public override void LoadChildren() { try { if (_fileSystemItem is DirectoryInfo) { var item = _fileSystemItem as DirectoryInfo; Children.Remove(DummyChild); foreach (var folder in item.GetDirectories()) { var f = new FileTreeViewModel(folder.Name, true, this, folder, _fileTreeViewEvent); Children.Add(f); } foreach (var file in item.GetFiles()) { var f = new FileTreeViewModel(file.Name, false, this, file, _fileTreeViewEvent); Children.Add(f); } } } catch (UnauthorizedAccessException) { } catch (SecurityException) { } }