private void FileSystemObjectInfo_PropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (FileSystemInfo is DirectoryInfo)
     {
         if (string.Equals(e.PropertyName, "IsExpanded", StringComparison.CurrentCultureIgnoreCase))
         {
             RaiseBeforeExpand();
             if (IsExpanded)
             {
                 ImageSource = FolderManager.GetImageSource(FileSystemInfo.FullName, ItemState.Open);
                 if (HasDummy())
                 {
                     RaiseBeforeExplore();
                     RemoveDummy();
                     ExploreDirectories();
                     ExploreFiles();
                     RaiseAfterExplore();
                 }
             }
             else
             {
                 ImageSource = FolderManager.GetImageSource(FileSystemInfo.FullName, ItemState.Close);
             }
             RaiseAfterExpand();
         }
     }
 }
        public FileSystemObjectInfo(FileSystemInfo info)
        {
            if (this is DummyFileSystemObjectInfo)
            {
                return;
            }

            Children       = new ObservableCollection <FileSystemObjectInfo>();
            FileSystemInfo = info;

            if (info is DirectoryInfo)
            {
                ImageSource = FolderManager.GetImageSource(info.FullName, ItemState.Close);
                AddDummy();
            }
            else if (info is FileInfo)
            {
                ImageSource = FileManager.GetImageSource(info.FullName);
            }

            PropertyChanged += new PropertyChangedEventHandler(FileSystemObjectInfo_PropertyChanged);
        }