您的位置:首页 > 其它

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

2017-03-11 10:06 507 查看
开发一个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}">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐