WPF-TreeView獲取文件夾目錄、DataGrid獲取目錄下文件信息


開發一個WPF桌面應用程序。剛接觸WPF編程以及C#語言,這里把一些關鍵的問題記錄下來。

 

下面是實現將路徑的文件夾信息綁定到TreeView及DataGrid上顯示。

關鍵問題是C#數據綁定方式及IEnumerable接口實現對文件類型數據的集合訪問,這里數據綁定使用的ItemSource方法,相關詳細內容可以搜索關鍵字查詢。

 

參考效果

 

 

C#代碼:

//加載FolderPath目錄下的文件夾及文件信息
private void Directory_load()
        {
            var directory = new ObservableCollection<DirectoryRecord>();

                directory.Add(
                    new DirectoryRecord
                    {
                        Info = new DirectoryInfo(FolderPath)
                    }
                );
            directoryTreeView.ItemsSource = directory;
        }

//DataGrid事件,設置列標

fileInfo.AutoGeneratingColumn += fileInfoColumn_Load;

private
void fileInfoColumn_Load(object sender, DataGridAutoGeneratingColumnEventArgs e) { List<string> requiredProperties = new List<string> { "Name", "Length", "FullName", "LastWriteTime" }; if (!requiredProperties.Contains(e.PropertyName)) { e.Cancel = true; } else { e.Column.Header = e.Column.Header.ToString(); } }
 
         

//利用IEnumerable接口實現對FileInfo及其屬性GetDirectories的調用 class DirectoryRecord { public DirectoryInfo Info { get; set; } public IEnumerable<FileInfo> Files { get { return Info.GetFiles(); } } public IEnumerable<DirectoryRecord> Directories { get { return from di in Info.GetDirectories("*", SearchOption.TopDirectoryOnly) select new DirectoryRecord { Info = di }; } } }


  其中from A in B select C 是將B集合中A對象的屬性C作為一組集合進行返回。

 

xaml代碼:TreeView控件與DataGrid控件利用ItemSource綁定方式綁定相應數據。

 <TreeView x:Name="directoryTreeView">
     <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:DirectoryRecord}"
                        ItemsSource="{Binding Directories}" >
          <StackPanel Orientation="Horizontal">
                  <TextBlock Text="{Binding Info.Name}"/>
            </StackPanel>
          </HierarchicalDataTemplate>
      </TreeView.Resources>
 </TreeView>



<DataGrid x:Name="fileInfo" ItemsSource="{Binding SelectedItem.Files, ElementName=directoryTreeView}">

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM