【问题标题】:Hierarchical data with XML and Treeview使用 XML 和 Treeview 的分层数据
【发布时间】:2011-11-12 03:04:23
【问题描述】:

我正在制作一个用户界面,用户可以在其中添加和存储指向他们喜爱的 Youtube 视频的链接。与浏览器中的收藏夹非常相似,但仅适用于 Youtube 视频。

我希望链接显示在树形视图中,以便可以将它们分类到类别和子文件夹等中。有点像这样:

Videos
|---Music Videos
      |---Music video 01
      |---Music video 02
      |---Music video 03
|---TV Shows
      |---TV show 01
      |---TV show 01

我目前最苦恼的是,一旦用户界面关闭,用户如何存储这些数据。我一直在研究 xml 绑定,但我似乎无法创建一个与树视图正常工作的像样的 xml 模式。

另外,我将如何将 URL 与视频名称一起存储,但树视图只显示名称?

我将非常感谢任何有关解决此问题的最佳方法的指示。有没有更好的办法?这一切都非常令人困惑。

非常感谢。

【问题讨论】:

    标签: wpf xml treeview hierarchical


    【解决方案1】:

    良好的数据架构是一个重要的问题,我只能提供一些我的想法,但不能保证它们都是一个好主意。

    首先不推荐直接使用 XML 数据,如果你尝试做更复杂的事情会很不方便。

    您可以将数据序列化为 XML,但您应该知道它的局限性和副作用,这里有一些问题可以在 SO 上找到,它们试图比较各种序列化方法,您可能想寻找那些因为其他格式可能更合适。例如,XML 的两个方面非常明显:

    • 由于标签和基于文本的数据导致巨大的文件大小开销
    • 与二进制序列化不同,数据或多或少具有人类可读性和透明性

    在任何情况下,我都会使用数据库或普通对象模型并将其序列化/反序列化以进行存储。

    如果你想允许子类别,你可能想使用composite pattern,那么你可以有一个对象VideoCategory,它们都实现了接口IVideoComposite,其中Category有一个属性以ObservableCollection<IVideoComposite> 类型的Children 为例。

    然后您可以使用隐式类型的数据模板(HierarchicalDataTemplate 代表 Category)在您的 TreeView 中创建项目。 (对于Category 之一,您会将ItemsSource 绑定到Children

    【讨论】:

    • 好的,谢谢您的回复。不过,您是对的,因为我对 XML 无能为力。我现在正在研究 SQLite,它似乎更适合我想要的东西。没有很多像样的信息或教程。我可能要买一本书。无论如何,谢谢你的想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多