wpf内嵌html5,WPF 4 目录树型显示

原文:WPF 4 目录树型显示

本篇将通过WPF4 制作简单的目录树型结构显示实例,完成本篇内容我们将作出下图所示的应用程序。

9fb679734ba5fc37afb58c258d961214.png

从图中我们可以看到程序主要分为两部分:左边显示本地驱动器的目录树型列表,右边显示被选中目录中的文件信息。首先,创建一个DirectoryRecord 类,通过两个泛型接口Files、Directories 分别获取文件信息和目录信息。其中使用Linq 获取目录信息时,我们只需要使用SearchOption.TopDirectoryOnly 读取当前目录文件夹信息即可,而不需使用SearchOption.AllDirectories 获取包含子文件在内的所有文件夹信息。 classDirectoryRecord{ publicDirectoryInfoInfo { get; set; } publicIEnumerable Files { get{ returnInfo.GetFiles(); } } publicIEnumerable Directories { get{ return fromdi inInfo.GetDirectories("*", SearchOption.TopDirectoryOnly) select newDirectoryRecord{ Info = di }; } }}

在中我们加入 和 分别显示目录树和文件信息。在TreeView 中通过HierarchicalDataTemplate 模板显示出目录树型层级结构,DataGrid 则通过绑定TreeView 中选择的目录而显示相应文件信息。

最后,通过Directory_Load 方法将本地磁盘目录加载到TreeView 中,并通过定义DataGridAutoGeneratingColumnEventArgs 事件fileInfoColumn_Load 在DataGrid 中过滤出想要参考的文件信息(Name、Length、FullName、IsReadOnly、LastWriteTime)。usingSystem.Collections.ObjectModel;usingSystem.IO;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Collections.Generic;namespaceWpfDirectoryTreeView{ /// ///Interaction logic for MainWindow.xaml/// public partial classMainWindow: Window{ publicMainWindow() { InitializeComponent(); Directory_Load(); fileInfo.AutoGeneratingColumn += fileInfoColumn_Load; } private voidDirectory_Load() { vardirectory = newObservableCollection(); foreach(vardrive inDriveInfo.GetDrives()) { directory.Add( newDirectoryRecord{ Info = newDirectoryInfo(drive.RootDirectory.FullName) } ); } directoryTreeView.ItemsSource = directory; } private voidfileInfoColumn_Load(objectsender, DataGridAutoGeneratingColumnEventArgse) { List requiredProperties = newList { "Name", "Length", "FullName", "IsReadOnly", "LastWriteTime"}; if(!requiredProperties.Contains(e.PropertyName)) { e.Cancel = true; } else{ e.Column.Header = e.Column.Header.ToString(); } } }}

参考资料

源代码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值