0

在我的 WPF 应用程序中,我有一个 Observablecollection“CollOfPersons”的 Persons,其中每个 Person 对象都有一个类型为“NotesOnPerson”的属性

List<Notes>

(在其他属性中)。现在我将“CollOfPersons”绑定到代码中的列表框 lb

lb.ItemsSource = CollOfPersons;

现在我已经建立了一个如何显示一个人的模板,即我将每个人包装在一个“扩展器”中,并在 Expander.header 中显示基本属性(例如,姓名、年龄),这很好用,例如,

<Expander.Header>
  <StackPanel Orientation="Horizontal">
    ...
    <TextBlock Text="{Binding Path=Name}"/>
    ...
  </StackPanel>
</Expander.Header>

但是,现在我想将 NotesOnPerson 笔记列表绑定到 Expander.Content。但由于这又是一个大小不一的列表,我不知道该怎么做。与上面相同的策略不起作用,因为我不知道扩展器的名称(因为我知道所有东西都在其中的大列表框的名称 'lb')。就像是

<Expander.Content>
   <ListBox ItemTemplate="{StaticResource NoteTemplate}"
            ItemsSource="{Binding Path=NotesOnPerson}"/>
</Expander.Content>

似乎不起作用。我似乎对代码和 XAML 绑定感到困惑。我应该如何解决这个问题?

4

1 回答 1

1

这是你要找的吗?

<Expander.Content>
   <ListBox ItemTemplate="{StaticResource NoteTemplate}"
            ItemsSource="{Binding NotesOnPerson}"/>
</Expander.Content>

我不熟悉Expander,但由于NotesOnPerson它(大概)是 的Person而不是 的属性Name,因此您应该使用这种语法。( thePath=是可选的,因为像这样放入它是另一种声明 的方式Path

于 2012-09-06T15:27:56.647 回答