数据绑定和列表中的列表

本文关键字:列表 数据绑定 | 更新日期: 2023-09-27 18:35:40

我做了一个示例项目来展示我的问题。它可以完整下载(BookExample.zip),但这里是快速摘要:

我有以下数据模型:

Course
  Name
  Book
    Name
    Pages
      Note
      Number
      Lines
        Note
        Number
实际数据是课程实例的列表,其中每个实例都包含一个页面实例

("页面")列表,其中每个实例都包含线类型对象("线条")的列表。我的目标是将此结构绑定到以下 UI:BookExample02.png

正确设置数据上下文后,更改课程选择会更改相关的书籍文本和页面注释列表。但是我不能更深入:我无法做到这一点,因此"行注释"列表会根据"页面注释"列表中的选择而更改。

"行注释"列表不为空的唯一原因是因为在 XAML 中我写了以下内容:

<ListBox Height="80" x:Name="listBox3" ItemsSource="{Binding Book.Pages[0].Lines}" />

因此,它始终显示第一页项的 Lines 属性。如何将该 0 替换为"页面注释"列表框中的选择索引?

数据绑定和列表中的列表

尝试将绑定设置为页面列表框中的选定项:

<ListBox Height="80" x:Name="listBox3" ItemsSource="{Binding SelectedItem.Lines, ElementName=listBox2}" />

将 ItemsSource 绑定更改为以下内容:

ItemsSource="{Binding Path=SelectedItem.Lines, ElementName=listBox2}"

然后,当您在页面列表中选择页面时,注释列表将正确更新。