XML和Treeview的分层数据

时间:2011-09-07 12:24:56

标签: wpf xml treeview hierarchical

我正在创建一个用户界面,用户可以在其中添加和存储指向自己喜爱的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与视频名称一起存储,但树视图只显示名称?

我非常感谢任何关于最佳方式的指示。有没有更好的办法?这一切都非常令人困惑。

非常感谢。

1 个答案:

答案 0 :(得分:1)

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

首先不建议直接使用XML数据,如果你尝试做更复杂的事情会非常不方便。

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

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

在任何情况下,我都会使用数据库或普通对象模型并序列化/去除存储。

如果您想要允许使用composite pattern的子类别,则可以拥有一个对象VideoCategory,两者都实现了IVideoComposite接口,其中Category的属性Children的类型为ObservableCollection<IVideoComposite>

然后,您可以使用隐式类型数据模板(Category的{​​{3}})来创建TreeView中的项目。 (对于Category中的一个,您将ItemsSource绑定到Children