1

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

无论如何,我是一个相当新手的程序员(计算机学位的第一年,所以我知道深蹲),我目前正在玩 C# 和 WPF。为了好玩,我正在尝试创建一个简单的音乐浏览器——首先,它会读取我的目录并列出文件,然后在双击或其他任何情况下启动一个。无论如何,我在如何存储 TreeViewItems 时遇到了麻烦。我需要将它存储为分层设计,这样我就可以循环遍历或在创建所有路径后填充 Treeview,但我不确定执行此操作的最佳方法。Atm,我正在使用 TreeViewItem[][][] - 一个包含数组的数组数组,实际上考虑它似乎是错误的......

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

谢谢你的帮助!

- 食物

4

2 回答 2

0

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

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

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

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

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

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

于 2009-05-15T13:29:42.690 回答
0

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

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

于 2009-05-15T13:30:08.570 回答