当前位置:   article > 正文

WPF-TreeView获取文件夹目录、DataGrid获取目录下文件信息

wpf树状显示文件夹

开发一个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}">

 

转载于:https://www.cnblogs.com/amourjun/p/6534161.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/582892
推荐阅读