/// <summary> /// Load child items. /// </summary> /// <param name="item">Current tree view item.</param> /// <param name="level">Recursion level.</param> /// <param name="index">Current level.</param> public void LoadChildItems(TreeViewItemModel item, int?level = null, int?index = null) { try { var dir = new DirectoryInfo(Path); var folders = dir .GetDirectories() .Select(x => x.ConvertToTreeItemModel()) .ToList(); item.ChildItems.Clear(); foreach (var folder in folders) { if (level.HasValue && level.Value >= index.Value) { index++; LoadChildItems(folder, level, index); } item.ChildItems.Add(folder); } } catch (Exception) { } }
/// <summary> /// Get selected item. /// </summary> /// <param name="item">Root item.</param> /// <returns>Selected item.</returns> public static TreeViewItemModel GetSelectedItem(TreeViewItemModel item) { if (item.IsSelected) { return(item); } if (!item.IsSelected && item.ChildItems.Any()) { var selectedTreeItemModel = item.ChildItems .Select(childItem => GetSelectedItem(childItem)) .FirstOrDefault(selectedItem => selectedItem != null); if (selectedTreeItemModel != null) { selectedTreeItemModel.IsSelected = false; return(selectedTreeItemModel); } } return(null); }