【问题标题】:WPF TreeView data binding to custom objectsWPF TreeView 数据绑定到自定义对象
【发布时间】:2016-03-07 08:43:59
【问题描述】:

当使用自定义对象时,我无法理解如何将数据绑定到 WPF TreeView。我已经研究并观看了教程,但我仍然卡住了。

背景:考虑三个类(我已将我的问题简化为这个)。它们代表一个有一个表的数据库,每个表都可以有字段。有一个表格列表。

1) 表列表类 带属性

List<Table Objects> 

2) 表类:

  • 属性名称
  • 使用 TableFields 属性

    SortedDictionary <Name, Field Object>
    

3) 字段类:

  • 带有名称属性

我当前尝试将字段(最低级别)绑定到 Table.TableFields.Key 的示例

<DataTemplate x:Key="fieldTemplate">
            <TextBlock Text="{Binding Path=Table.TableFields.Key}"/>
</DataTemplate>

DESIRED OUTPUT - 表格列表的分层视图,包含表格及其字段。

Table 1
   Field 1
   Field 2
   Field 3
Table 2
   Field 1
   Field 2
   Field 3
 Table N
   Field N
  • 我正在接受指导,以便更好地了解如何绑定这些数据,我的问题的一个例子是数据绑定必须查看一个 Table Objects TableFields 属性,它是一个 SortedDictionary,我想在其中获取 Key将是一个字段名称。

我对如何绑定自定义对象和访问这样的信息感到困惑。

【问题讨论】:

  • 我不确定我是否理解这个问题,我在处理树可视化时一直使用的是创建一个 Node 类,该类绑定到树控件并且是树友好的数据类,它包含各种对象的数据,这些对象构成由读取数据的加载方法创建的树的级别。
  • @sabrina_cs 我更新了我的问题

标签: c# wpf object treeview


【解决方案1】:

这将显示您的 TreeView

      <TreeView ItemsSource="{Binding TableList}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource = "{Binding Path=TableFields}">
                    <TextBlock Text="{Binding Path=Name}"/>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Key}"/>
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>

【讨论】:

  • 感谢您的回复,但我不确定这是否有帮助。在理解和学习如何正确地做到这一点之后,我更感兴趣。我也不认为 HierarchialDataTemplate 到 TableFields 会起作用吗?在这种情况下,我不会参考表格本身。通过添加我的预期输出进行更新。
  • 无论您设置为 TreeView 的 ItemsSource 的集合,都将由 HierarchicalDataTemple 显示,它与 DataTemplate 相同,但此外它还提供 ItemsSource 属性,您可以设置该属性以显示子级别。 HierarchicalDataTemplate.ItemTemplate 将定义该子级别的显示方式。同样,在 HierarchicalDataTemplate 中使用 HierarchicalDataTemplate,您可以显示任意数量的子级别。
  • 我添加了一个改进的问题,希望能帮助理解我想要做什么。我正在做这个项目以重新开始编程。非常感谢您的帮助,因此我可以学习这个概念并应用它。
猜你喜欢
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多