• 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}">
  • 相关阅读:
    hlt 与 llt 相关
    LINUX重启MYSQL的命令
    python 判断元素是否在一个列表中
    xshell && xftp 下载
    UltraISO 下载
    mysql 全连接和 oracle 全连接查询、区别
    导致SQL执行慢的原因
    什么是索引?
    在浏览器地址栏输入URL,按下回车后究竟发生了什么?
    URL的作用是什么?它由几部分组成?
  • 原文地址:https://www.cnblogs.com/amourjun/p/6534161.html
Copyright © 2020-2023  润新知