【问题标题】:How to bind Self-referencing table to WPF TreeView如何将自引用表绑定到 WPF TreeView
【发布时间】:2013-01-04 17:33:08
【问题描述】:

从 edmx 绑定自引用表的最佳解决方案是:

到 WPF TreeView 控件有类似的东西:

【问题讨论】:

    标签: c# wpf entity-framework data-binding treeview


    【解决方案1】:

    我用这个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
    

    【讨论】:

    • 你能解释一下转换函数是在哪里实现的吗?你有实现 IValueConverter 之类的自定义转换器类吗?
    • 对“MyTable”对象的解释也很好。很抱歉,我无法在这种状态下重现您的回答。
    • 是的。我有一个自定义转换器类,它使用第一个 Convert 函数实现 IValueConverter。 “MyTable”对象类似于问题正文中显示的带有 Id 和 Parent_id 列的表格。
    【解决方案2】:

    Josh Smith 有一个出色的article on Code Project,它指导您如何制作一个您的TreeView 可以绑定到的视图模型。只使用 EF 是无法逃脱的,因为 EF 不进行递归。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 2010-09-19
      • 2017-01-02
      相关资源
      最近更新 更多