当前位置:  开发笔记 > 编程语言 > 正文

如何将WPF TreeView HierarchicalDataTemplate与LINQ to Entities一起使用?

如何解决《如何将WPFTreeViewHierarchicalDataTemplate与LINQtoEntities一起使用?》经验,为你挑选了2个好方法。

我的.edmx ADO.NET实体数据模型文件中有一个带有Parent和Children属性的Page类.它适用于Pages的层次结构.

删除死了ImageShack链接 - ADO.NET实体框架分层页面类

这是在我的SQL数据库中处理的,其中Page表中的ParentId外键绑定到同一Page表的Id主键.

如何在WPF TreeView中显示此层次结构?



1> Zack Peterso..:

我得到了Abe Heidebrecht的帮助.非常感谢他.

这是我的XAML ......


    
        
            
                
                    
                
            
        
    

这是我的Visual Basic代码......

Class Window1

    Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Dim db As New PageEntities
        Dim RootPage = From p In db.Page.Include("Children") _
                       Where (p.Parent Is Nothing) _
                       Select p
        TreeViewPages.ItemsSource = RootPage
    End Sub

    Private Sub TreeViewPages_Expanded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        Dim ExpandedTreeViewItem As TreeViewItem = DirectCast(e.OriginalSource, TreeViewItem)
        Dim PageId As Guid = DirectCast(ExpandedTreeViewItem.DataContext, Page).Id
        Dim db As New PageEntities
        Dim ChildPages = From p In db.Page.Include("Children") _
                         Where p.Parent.Id = PageId _
                         Select p
        ExpandedTreeViewItem.ItemsSource = ChildPages
    End Sub
End Class

加载窗口时,将从数据库中查询根节点及其子节点并将其插入树中.

每次展开节点时,都会从数据库中查询该节点的子节点和孙子节点并将其插入到树中.



2> Mike Christi..:

一种不同的方式:(嗯,非常相似,但略有不同)

在您的窗口加载功能中:

PageEntities db = new PageEntities();
TreeViewPages.ItemsSource = db.Page.Where(u=>u.Parent==null);

创建一个新的文件Page.cs

public partial class Page {
    public ObjectQuery LoadedChildren {
        get {
            var ret = Children;
            if(ret.IsLoaded==false) ret.Load();
            return ret;
        }
    }
}

在你的XAML中:


    
        
            
        
    

它没有经过测试,但你应该得到一般的想法.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有