WPF C#使用Directory.GetDirectories填充DataGrid的问题咨询
实现方案
你当前直接绑定Directory.GetDirectories()返回的字符串数组,只能拿到路径文本和长度两个属性,没法满足获取文件夹日期、显示短名称的需求,按如下调整即可:
- 修改C#后端代码,将路径字符串转为
DirectoryInfo对象集合,该对象封装了文件夹的所有系统属性:
// 原获取路径逻辑保留,增加转DirectoryInfo的处理 var dirPaths = Directory.GetDirectories("替换为你的NAS路径"); var dirInfoList = dirPaths.Select(path => new DirectoryInfo(path)).ToList(); // 绑定转换后的集合到DataGrid RandomDataGridName.ItemsSource = dirInfoList;
- 修改XAML绑定配置,直接绑定
DirectoryInfo的对应属性即可,DataGrid默认支持点击列头自动按对应属性排序,无需额外编码:
<DataGrid.Columns> <DataGridTextColumn IsReadOnly="True" Binding="{Binding Name}" Header="文件夹名称"/> <DataGridTextColumn IsReadOnly="True" Binding="{Binding CreationTime}" Header="创建日期"/> <DataGridTextColumn IsReadOnly="True" Binding="{Binding LastWriteTime}" Header="最后修改时间"/> <!-- 如果需要显示完整路径再加下面这列,不需要可以直接删除 --> <DataGridTextColumn IsReadOnly="True" Binding="{Binding FullName}" Header="完整路径"/> </DataGrid.Columns>
问题解答
- 问题1:直接使用
Directory.GetDirectories()的字符串返回结果不能实现需求,转换为DirectoryInfo集合绑定后即可实现显示日期、点击列排序的需求。 - 问题2:不需要手动裁剪路径,
DirectoryInfo的Name属性本身就只返回路径末尾的文件夹名称,直接绑定该属性即可。
内容的提问来源于stack exchange,提问作者Stanko Maksimovic
相关产品推荐
相关产品推荐

