WPF 4.0 と Caliburn Micro を使用して C# でアプリを作成しています。ViewModel を DataTemplate のコントロールの 1 つであるリストボックスにバインドする必要があります。この DataTemplate は、外側のリストボックスで ItemTemplate として使用されます...いいえ、それはあまり明確ではないと思います。
各部屋に複数のゲストがいる複数の部屋があるホテルの例を使用して、何をする必要があるかを説明してみましょう。
ホテルの画面には、RoomViewModel 項目を含む Rooms という名前の ObservableCollection にバインドされている Rooms という名前のリストボックスがあります。Rooms リストボックスには、次のような RoomTemplate という名前の ItemTemplate があります。
<ListBox x:Name="Rooms" ItemTemplate="{DynamicResource RoomTemplate}"/>
RoomTemplate は次のようになります (非常に単純化されています):
<DataTemplate x:Key="RoomTemplate">
<DockPanel VerticalAlignment="Top">
<TextBlock x:Name="RoomDescription" Text="{Binding Path=RoomDescr}" />
<ListBox x:Name="Guests" ItemTemplate="{DynamicResource GuestTemplate}"/>
</DockPanel>
</DataTemplate>
RoomViewModel には、GuestViewModel アイテムを含む、Guests という名前の ObservableCollection が含まれています。RoomTemplate には、Guests コレクション内の GuestViewModel 項目を表示する、Guests という名前のリストボックスが含まれています。GuestTemplate には、GuestViewModel へのバインドが必要な複数の TextBlock が含まれます。
リストボックス ルームからコレクション ルームへの最初のバインドは、CM の規約バインダーによって処理され、問題なく動作します。私の問題は、GuestTemplate のリストボックス ゲストの 2 番目のバインドです。Rooms コレクションに含まれる RoomViewModels の Guest アイテムにバインドするにはどうすればよいですか?