/// <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);
 }