存储WPF TreeView(C#)的文件信息

时间:2009-05-15 13:09:41

标签: c# wpf treeview populate

嘿那里。我希望以前没有提出过这个问题 - 我在相关问题列表中找不到它。

无论如何,我是一个相当新手的程序员(计算学位的第一年,所以我知道蹲下),而且我现在正在玩C#和WPF。为了好玩,我正在尝试创建一个简单的音乐浏览器 - 首先,它只是读取我的目录并列出文件,然后启动一个,如果你双击或其他。无论如何,我在如何存储TreeViewItems时遇到了麻烦。我需要将它存储为分层设计,所以我可以循环浏览或者在我创建所有路径后填充Treeview,但我不确定最好的方法。 Atm,我正在使用TreeViewItem [] [] [] - 一个包含数组的数组数组,实际上看起来错了...

现在考虑一下,也许我应该创建一个数据库,并从中填充树视图?唯一的问题是,我从未做过像XD这样的事情。

感谢您的帮助!

-Edibles

2 个答案:

答案 0 :(得分:0)

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

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

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

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

就存储而言,我建议使用数据库(如SQLite)或XML文件。由于您正在学习开发,我建议从XML文件开始。这是表示数据的好方法,并且不需要与数据库相同的复杂开销。如果你把它带到生产水平,我肯定会推荐一个数据库。

编辑:问题本身有点模糊,因此您可能希望更具体地了解您的具体要求。您是否想要TreeView绑定的代码示例,或者您想要指导或整体结构?

答案 1 :(得分:0)

如果您的目的是仅通过资源管理器样式文件夹结构访问音乐,那么您不需要数据库,因为Windows文件系统已经为您提供了一个集中点来获取数据。您确实希望在启动时尝试填充整个树时要小心,因为您不希望等待应用程序的用户在开始导航树之前爬行其硬盘的整个结构。仅在需要时加载树项的过程称为延迟加载,这超出了答案的范围。幸运的是,this Code Project article显示了如何做到这一点。

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