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

u010084305 2013-03-29 04:25:24
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.不显示加减号.
断点看了变量的数据结构是正常嵌套的.有子层.求大神看看.
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010084305 2013-03-30
  • 打赏
  • 举报
回复
EntityFramework或linq高手们
u010084305 2013-03-29
  • 打赏
  • 举报
回复
引用 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>
sj490790083 2013-03-29
  • 打赏
  • 举报
回复
xaml
sj490790083 2013-03-29
  • 打赏
  • 举报
回复
用DataTemplate,准备好数据源放在xmal的静态资源里,再准备一组<HierarchicalDataTemplate></HierarchicalDataTemplate> 设置其DataType,可以确定每一层要绑定的数据类型,最好把数据源Binding给treeview就好了
u010084305 2013-03-29
  • 打赏
  • 举报
回复
我看网上一些实例,绑定数据是List的.然后是递归方法.但 EntityFramework这个codeFirst生成的数据自动就递归好了呀.只不过是 Collection<>()格式的.
u010084305 2013-03-29
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
你是怎么绑定的? 要用递归加载的treeview上
我这样绑定不行.
         var r6 = context.sorts.FirstOrDefault(x => x.Name == "Lei5");
                TreeView1.ItemsSource = new Collection<sort>() { r6 };
这个r6的结构有嵌套.和网上其他绑定实例结构差不多.
gxingmin 2013-03-29
  • 打赏
  • 举报
回复
你是怎么绑定的? 要用递归加载的treeview上

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧