【问题标题】:Best way to bind WCF DomainService data to a TreeView in Silverlight?将 WCF DomainService 数据绑定到 Silverlight 中的 TreeView 的最佳方法?
【发布时间】:2011-02-28 17:12:33
【问题描述】:

我有一个类似这样的数据库结构:

物品

  • 身份证
  • 姓名
  • ParentItemFK(任务和笔记可以有任何项目作为父项;类别只能有其他类别作为父项)
  • 类别FK
  • TaskFK
  • NoteFK

类别

  • 身份证
  • 说明(可选)

任务

  • 身份证
  • 完整说明
  • 已完成

注意事项

  • 身份证
  • 全文

项目将显示在 TreeView 中。项目可以是类别、任务或注释(因此只有一个 FK 列被填写)。

我想在 TreeView 中显示所有项目。我正在使用带有 WCF 的 DomainService 从后端获取数据,以便在 Silverlight 中显示。

我可以以编程方式构建要在 TreeView 中显示的对象(即创建一个对象,例如 ItemNode,每个子项都有子 ItemNode)。这可能没问题,但是当刷新 DomainService 的数据时,我认为必须重建整个 ItemNode 列表(这可能经常发生)。

我在 DomainService 下使用实体框架,如果这很重要的话。

有没有更好的方法来做到这一点??

谢谢!

【问题讨论】:

    标签: silverlight wcf entity-framework treeview domainservices


    【解决方案1】:

    我做了类似的事情,并创建了一个代表我的层次结构的自定义对象。然后我创建了一个帮助类来递归自定义对象并创建 Tree 节点以绑定到 TreeView。

    我还使用 Hierarchy SQL 数据类型来表示我在数据库中的层次结构。

    由于您使用实体框架,我认为您最好的选择是创建一些 TreeNode 类,该类将接收您的实体,然后通过它们递归并吐出 TreeNode 的层次结构,然后您可以将其绑定到 TreeView .

    此外,您需要将该实体的唯一标识符放在 TreeNode.Value 中,以便当用户与节点交互时,您将能够轻松修改代表 TreeNode 的实体。因此,创建另一个将通过您的实体递归的类,并根据其标识符获取对该实体的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-02
      • 2011-02-09
      • 1970-01-01
      • 2011-03-12
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多