0

私のWPFアプリケーションには、PersonのObservablecollection「CollOfPersons」があり、各Personオブジェクトには「NotesOnPerson」タイプのプロパティがあります

List<Notes>

(他のプロパティの中でも)。ここで、「CollOfPersons」をコードでリストボックス lb にバインドします

lb.ItemsSource = CollOfPersons;

これで、人を表示する方法のテンプレートを設定しました。つまり、各人を「Expander」でラップし、基本的なプロパティ (名前、年齢など) を 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、使用する必要がある構文です。(Path=はオプションです。そのように入れるだけで、 を宣言する別の方法になりますPath)

于 2012-09-06T15:27:56.647 に答える