当前位置:编程学习 > C#/ASP.NET >>

EntityFramework的数据怎么绑定到wpf的TreeView里

Entity Framework的code:
 public class sort
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public virtual ICollection<sort> sorts { get; set; }
    }
 public class myDb : DbContext
    {
        public DbSet<sort> sorts { get; set; }
    }


然后里面加了几个分类都能正常的存取.嵌套.
   using (var context = new myDb())
            {
                var r1 = new sort {Name = "Lei1"};
                var r3 = new sort {Name = "Lei3"};
                var r5 = new sort {Name = "Lei5"};
                var r4 = new sort {Name = "Lei4"};
                r4.sorts = new Collection<sort>() {r1};
                r1.sorts = new Collection<sort>() {r3};
                r5.sorts = new Collection<sort>() {r4};
                context.Entry(r5).State = EntityState.Added;
                context.SaveChanges();
            }

生成的数据库也正常:
ID	Name	sort_ID
1 Lei5 NULL
2 Lei4 1
3 Lei1 2
4 Lei3 3

但绑定到TreeView的时候.只显示第一层的Name.不显示加减号.
断点看了变量的数据结构是正常嵌套的.有子层.求大神看看. wpf TreeView --------------------编程问答-------------------- 你是怎么绑定的?
要用递归加载的treeview上 --------------------编程问答--------------------
引用 1 楼 gxingmin 的回复:
你是怎么绑定的?
要用递归加载的treeview上

我这样绑定不行.
         var r6 = context.sorts.FirstOrDefault(x => x.Name == "Lei5");
                TreeView1.ItemsSource = new Collection<sort>() { r6 };

这个r6的结构有嵌套.和网上其他绑定实例结构差不多. --------------------编程问答-------------------- 我看网上一些实例,绑定数据是List的.然后是递归方法.但 EntityFramework这个codeFirst生成的数据自动就递归好了呀.只不过是 Collection<>()格式的. --------------------编程问答-------------------- 用DataTemplate,准备好数据源放在xmal的静态资源里,再准备一组<HierarchicalDataTemplate></HierarchicalDataTemplate>
设置其DataType,可以确定每一层要绑定的数据类型,最好把数据源Binding给treeview就好了 --------------------编程问答-------------------- xaml --------------------编程问答--------------------
引用 4 楼 sj490790083 的回复:
用DataTemplate,准备好数据源放在xmal的静态资源里,再准备一组<HierarchicalDataTemplate></HierarchicalDataTemplate>
设置其DataType,可以确定每一层要绑定的数据类型,最好把数据源Binding给treeview就好了

你这是普通的数据.网上也很多这样的例子.但是EntityFramework的数据这样不行.只显示一个节点.不知道是怎么回事.
    <Window.Resources>
        <ResourceDictionary>
            <HierarchicalDataTemplate   x:Key="CheckBoxItemTemplate" DataType="{x:Type dal:sort}" ItemsSource="{Binding sorts}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name}"/>
                </StackPanel>
            </HierarchicalDataTemplate>
        </ResourceDictionary>
    </Window.Resources>
    <Grid>
        <TreeView Name="TreeView1"   ItemsSource="{Binding}" ItemTemplate="{StaticResource CheckBoxItemTemplate}">
        </TreeView>
    </Grid>
--------------------编程问答-------------------- EntityFramework或linq高手们
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,