C# 存储WPF树视图的文件信息(C)

C# 存储WPF树视图的文件信息(C),c#,wpf,treeview,populate,C#,Wpf,Treeview,Populate,你好。我希望这个问题以前没有出现过——我在相关问题列表中找不到它 不管怎么说,我是一名计算机专业第一年的新手程序员,所以我知道Shuck,我现在正在玩C和WPF。为了好玩,我正在尝试创建一个简单的音乐浏览器——首先,它将读取我的目录并列出文件,然后在双击或其他任何操作时启动一个。不管怎样,我在如何存储TreeViewItems上遇到了麻烦。我需要将其存储为分层设计,这样在创建所有路径后,我就可以通过循环或其他方式填充树视图,但我不确定这样做的最佳方式。Atm,我使用的是TreeViewItem[

你好。我希望这个问题以前没有出现过——我在相关问题列表中找不到它

不管怎么说,我是一名计算机专业第一年的新手程序员,所以我知道Shuck,我现在正在玩C和WPF。为了好玩,我正在尝试创建一个简单的音乐浏览器——首先,它将读取我的目录并列出文件,然后在双击或其他任何操作时启动一个。不管怎样,我在如何存储TreeViewItems上遇到了麻烦。我需要将其存储为分层设计,这样在创建所有路径后,我就可以通过循环或其他方式填充树视图,但我不确定这样做的最佳方式。Atm,我使用的是TreeViewItem[][]]-一个包含数组的数组数组,实际上这种想法似乎是错误的

现在想想,也许我应该创建一个数据库,并从中填充treeview?唯一的问题是,我也从来没有做过这样的事

谢谢你的帮助


-Edibles

让我们后退一步,看看整体架构。在这种情况下,您通常会让TreeView显示数据、表示数据的类类型以及作为数据存储的文件/数据库等

模式应该是将数据从文件/数据库/等加载到表示实体的自定义类类型中。接下来,您将使用WPF绑定或手动绑定将该源绑定到TreeView

假设您希望树中的每个节点表示一个音乐专辑。您将创建一个MusicAlbum类,该类可能由艺术家、专辑标题、专辑日期、歌曲列表等组成。此数据与文件/数据库/等进行序列化

接下来,将该数据绑定到TreeView。WPF支持直接绑定到自定义对象列表,也可以手动配置绑定。如果您对开发的更新,您可能需要考虑手动绑定,因为配置更容易一些,它将为您提供良好的实践。

就存储而言,我建议使用类似SQLite的数据库或XML文件。由于您正在学习开发,我建议您从XML文件开始。这是一种表示数据的好方法,并且不需要与数据库相同的复杂性开销。如果您将此应用到生产级别,我肯定会推荐一个数据库


编辑:问题本身有点模糊,所以你可能想更具体地说明你到底想要什么。您是想要TreeView绑定的代码示例,还是想要指南或整体结构?

如果您的目的是只通过浏览器风格的文件夹结构访问音乐,那么您不需要数据库,因为windows文件系统已经为您提供了一个中心点来获取数据。不过,在尝试在启动时填充整个目录树时,您确实需要小心,因为您不希望等待应用程序的用户在开始导航目录树之前对其硬盘驱动器的整个结构进行爬网。仅在需要时加载树项的过程称为延迟加载,这超出了本文的回答范围。幸运的是,我们展示了如何做到这一点

另一方面,如果您希望模仿Windows Media player库样式,用户提供特定目录,并创建一种按艺术家、唱片集等导航MP3的方式,那么您可能需要在后台使用某种数据库。在这些情况下,您需要从选定文件夹中的MP3读取标签信息,将信息添加到一个标准化的数据库中,以便快速搜索和交叉引用,并提供一个用户界面,允许用户以这种方式导航。再一次,您将看到延迟加载树-选择一个艺术家,然后在请求时用数据库中的所有唱片集/歌曲填充子节点-但是在到达之前还有很多工作要完成选择一种数据库类型,定义模式,了解如何解析mp3标签等,所以我假设您指的是第一个选项