我正在使用 WPF 4.0 和 Caliburn Micro 开发 C# 应用程序。我需要将 ViewModel 绑定到一个列表框,该列表框是 DataTemplate 中的控件之一。此 DataTemplate 在外部列表框中用作 ItemTemplate 并且...不,我想这不是很清楚。
让我试着用一个有几个房间的酒店的例子来解释我需要做什么,每个房间都有几个客人。
酒店屏幕有一个名为 Rooms 的列表框,它绑定到一个 ObservableCollection,也名为 Rooms,其中包含 RoomViewModel 项。房间列表框有一个名为 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 包含一个名为 Guest 的 ObservableCollection,其中包含 GuestViewModel 项。RoomTemplate 包含一个名为 Guest 的列表框,它应该显示 Guest 集合中的 GuestViewModel 项。GuestTemplate 将包含几个需要绑定到 GuestViewModel 的 TextBlock。
列表框房间到集合房间的第一个绑定由 CM 的约定绑定器处理,并且工作得很好。我的问题是 GuestTemplate 中列表框来宾的第二个绑定。如何将其绑定到 Rooms 集合中包含的 RoomViewModels 中的 Guest 项目?