/// <summary> /// Occurs when this item is expanded. /// </summary> protected override async void LoadChildren() { var dirInfo = this.File as DirectoryInfo; if (!this.IsDirectory || dirInfo == null) { return; } this.Children.Clear(); var loader = new ModelTreeViewItem(this, false) { Text = "Loading...", Icon = MainMenuIcon.LoadingHourglass }; this.Children.Add(loader); var fileItems = new Collection <ExplorerItem> (); var getDirs = Task.Run(() => { var directories = dirInfo.GetDirectories(); foreach (var directoryInfo in directories) { var info = directoryInfo; fileItems.Add(new ExplorerItem(this, info, this.m_ShowFiles)); } }); await getDirs; if (this.m_ShowFiles) { var getFiles = Task.Run(() => { var fileInfos = dirInfo.GetFiles(); foreach (var fileInfo in fileInfos) { var info = fileInfo; fileItems.Add(new ExplorerItem(this, info)); } }); await getFiles; } this.Children.Clear(); int count = 0; foreach (var explorerItem in fileItems) { count++; this.Children.Add(explorerItem); if (count == 100) { // This keeps the UI responsive when adding lots of items... await Task.Delay(500); count = 0; } } fileItems.Clear(); this.Loaded(); }
/// <summary> /// Initializes a new peter project. /// </summary> /// <param name="parent">Parent item</param> /// <param name="directory">The directory for this item.</param> public MockPeterProject(ModelTreeViewItem parent, DirectoryInfo directory) : base(parent, directory) { }
/// <summary> /// Initializes a new peter project. /// </summary> /// <param name="parent">Parent item</param> /// <param name="file">The file for this item.</param> public MockPeterProject(ModelTreeViewItem parent, FileInfo file) : base(parent, file) { }
/// <summary> /// Initializes a new peter project. /// </summary> /// <param name="parent">Parent item</param> public MockPeterProject(ModelTreeViewItem parent) : base(parent) { }