WPF-TreeView获取文件夹目录、DataGrid获取目录下文件信息 - amourjun - 博客园

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

复制代码; "复制代码")


原网址: 访问
创建于: 2024-05-30 18:07:46
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论