如何将自引用表绑定到WPF TreeView

3
什么是将类似edmx中的自引用表绑定到WPF TreeView控件的最佳解决方案,以获得如下结果:
2个回答

3
我使用这个 数据绑定转换器(Binding Converter) 解决了这个问题:
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var item = value as MyTable;
        return  item.MyTable1.Where(i => i.parent_id== item.id); //return children
    }

.xaml :

<TreeView Name="treeview1" ItemsSource="{Binding Converter={StaticResource HierarchyConverter}}" ItemTemplate="{StaticResource ItemTemplate}" >
      <TreeView.Resources>
            <local:HierarchyConverter x:Key="HierarchyConverter" />
            <HierarchicalDataTemplate x:Key="ItemTemplate" ItemsSource="{Binding Converter={StaticResource HierarchyConverter}}">
                  <TextBlock Text="{Binding element_name}" />
            </HierarchicalDataTemplate>
      </TreeView.Resources>
</TreeView>

.cs :

treeview1.ItemsSource = db.MyTable.Where(x => x.partnt_id== null);//elements that have no parent

你能解释一下convert函数在哪里实现吗?你有一个自定义的转换器类,它实现了IValueConverter或者其他什么吗? - Lorgarn
同时,对于'MyTable'对象的解释也会很有帮助。很抱歉,我无法在当前状态下重现您的答案。 - Lorgarn
是的。我有一个自定义转换器类,实现了IValueConverter接口,并拥有第一个Convert函数。 'MyTable'对象就像问题主体中显示的那个带有Id和Parent_id列的表。 - ARZ

1
Josh Smith在Code Project上有一篇出色的文章,详细介绍了如何创建一个视图模型,使您的TreeView可以绑定。您不能仅使用EF,因为EF不支持递归。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接